Entorno de integración continua (II): Servidor Git

Lo primero que vamos a montar es el servidor de Git, el cual afortunadamente, forma parte de los paquetes de la distribución con lo cual su instalación será muy fácil y solo tendremos que centrarnos básicamente en su configuración. Los pasos a seguir para la instalación y configuración serían los siguientes:
1. Instalar un servidor apache (en caso de no tenerlo), instalar el servidor Git e instalar su front-end web. Para ello bastará con ejecutar la siguiente instrucción:
sudo aptitude install apache2 git gitweb
Nota: Creo que para versiones anteriores a la 12.04 el paquete correspondiente a Git se llama git-core.
2. Crear los directorios para el repositorio de Git y para el contenido del front-end web. En principio, los podréis crear donde queráis, simplemente acordaos de dar los permisos adecuados para su utilización. Yo como para casi todo, recomiendo la creación de un nuevo usuario para el servidor de Git y lo que tenga que ver con él. En caso de que hayáis creado un usuario para Git, o de que simplemente estéis probando esto en vuestro ordenador personal y lo hagáis todo con vuestro usuario, crearemos los siguientes directorios:
Para el repositorio: mkdir /home/user/git
Para el front-end web: mkdir /home/user/gitweb
3. Tendremos que decirle al servidor web, apache en nuestro caso, donde está este front-end web para poder acceder a él. Para esto, dentro de los ficheros de configuración del servidor, existe uno específico para git que vamos a proceder a editar.
vim /etc/apache2/conf.d/gitweb
En él reemplazaremos su contenido por algo similar a lo siguiente, por supuesto, teniendo en cuenta las rutas que vosotros estéis utilizando:
Alias /git /home/user/gitweb
<Directory /home/user/gitweb >
Allow from all
AllowOverride all
Order allow,deny
Options +ExecCGI
DirectoryIndex gitweb.cgi
<files gitweb.cgi >
SetHandler cgi-script
</files>
</directory>
SetEnv  GITWEB_CONFIG  /etc/gitweb.conf
4. Para que la parte del front-end funcione correctamente, recordemos que el directorio gitweb aún está vacío, tendremos que mover contenido a él:
mv /usr/share/gitweb/* /home/user/gitweb
mv /usr/lib/cgi-bin/gitweb.cgi /home/user/gitweb
5. Finalmente, haremos unos pequeños cambios en el fichero de configuración de gitweb. La mayoría de ellos consisten simplemente en cambiar las rutas a las utilizadas por nosotros y descomentar un par de cosas.
vim /etc/gitweb.conf
El resultado del fichero, sin tener en cuenta comentarios, debería ser más o menos este:
$projectroot = ‘/home/user/git/’;
$git_temp = “/tmp”;
$home_link = $my_uri || “/”;
$home_text = “indextext.html”;
$projects_list = $projectroot;
$stylesheet = “/git/gitweb.css”;
$logo = “/git/git-logo.png”;
$favicon = “/git/git-favicon.png”;
6. Finalmente, recargamos el servidor web para contemplar todos los cambios efectuados y con esto deberíamos tener nuestro servidor Git funcionando.
sudo /etc/init.d/apache2 reload
Ahora bien, quien se fíe de que algo vaya bien a la primera sin probarlo, que levante la mano… ¿Ninguna? Muy bien, yo opino igual, así que vamos a probarlo. Para ello, simplemente vamos a crear un pequeño proyecto vacío en nuestro y vamos a subirlo a ver si todo funciona correctamente.
1. Creamos el directorio de nuestro proyecto en el directorio de repositorios:
cd /home/user/git
mkdir testproject
cd testproject
2. Iniciamos un repositorio para el proyecto y realizamos el primer commit:
git init
echo “Primer commit de prueba” > .git/description
git config –global user.name “svoboda”
git config –global user.email “svoboda@example.org”
git commit -a
3. Hacer público el repositorio
git daemon –base-path=/home/user/git –detach –syslog –export-all
Con esto ya tendríamos todo funcionando y, además, un pequeño repositorio iniciado. Si hasta aquí no os ha dado ningún fallo, es que vamos bien. Por último, vamos a acceder a este repositorio y bajarlo. Podemos hacer esto desde consola situándonos en algún directorio de nuestra elección no dentro de nuestro repositorio:
git clone git://localhost/testproject cloneproject
O desde el front-end web localizado en:
localhost/git

Entorno de integración continua (II): Servidor Git

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.