Trac
De Javi Sanromán wiki
Tabla de contenidos[ocultar] |
¿Que es trac?
Trac es una herramienta con interfaz web para la gestión de proyectos de software. Trac integra un wiki, un sistema de tickets (bugs, incidencias, mejoras, etc), integración con svn e integración entre el módulo de tickets y svn (pudiendo cerrar, añadir comentarios a un ticket a través de un commit de svn), y unas útiles vistas sobre la actividad del proyecto que reune los últimos commits svn, ultimas paginas modificadas del wiki, ultimos tickets.
A diferencia de otros sistemas parecidos y mas completos como puede ser gforge, trac es ligero y sencillo de instalar y mantener.
Instalación básica
En ubuntu ya lo tenemos en los repositorios oficiales por lo que simplemente debemos hacer:
sudo apt-get install trac sudo easy_install Trac
Necesitamos un directorio para almacenar los proyectos trac:
sudo mkdir /var/lib/trac sudo chown www-data:www-data /var/lib/trac
Utilizaremos /var/lib/trac y este debe ser accesible por el usuario de apache.
Y ahora solo tenemos que crearnos nuestro proyecto trac:
sudo trac-admin /var/lib/trac/ProyectoPrueba initenv
Al ejecutar este comando se nos pedirá el nombre del proyecto, el tipo de repositorio de versiones que utilizamos (svn por defecto) y el path absoluto a dicho repositorio.
Ahora podemos ejecutar la siguiente linea con un usuario que tenga permisos sobre /var/lib/trac:
tracd --port 8000 /var/lib/trac/prueba
y abrir el navegador en http://localhost:8000/prueba
Ya tenemos nuestro primer proyecto trac!
Trac, Apache y mod_python
Podemos configurar un host virtual para servir el proyecto trac que necesitemos haciendo uso de mod_python. Debemos tener instalado apache2, libapache2-mod-python, como siempre en debian y derivadas un simple apt-get install ... bastará. Activamos mod_python
a2enmod mod_python
Y creamos nuestro virtual host en apache. Creamos un fichero, en mi caso pruebastrac, en /etc/apache2/sites-available:
NameVirtualHost * <VirtualHost *> ServerAdmin tu_email ServerName pruebastrac.net ServerAlias pruebastrac.net DocumentRoot /var/lib/trac ErrorLog /var/log/apache2/error.trac.log CustomLog /var/log/apache2/access.trac.log combined Alias / "/var/lib/trac/prueba/" <Directory "/var/lib/trac/prueba/"> SetHandler mod_python PythonInterpreter main_interpreter PythonHandler trac.web.modpython_frontend PythonOption TracEnv /var/lib/trac/prueba PythonOption TracUriRoot / SetEnv PYTHON_EGG_CACHE /tmp PythonOption PYTHON_EGG_CACHE /tmp </Directory> </VirtualHost>
y creamos el enlace simbólico en /etc/apache2/sites-enabled:
sudo ln -s ../sites-available/pruebastrac ./pruebastrac
Ahora procedemos a instalar genshi (motor de plantillas escrito en python y del que trac hace uso):
apt-get install python-genshi sudo easy_install -Z Genshi==0.5
Apuntamos en nuestro fichero de hosts pruebastrac.net a 127.0.0.1 y reiniciamos apache, deberiamos acceder al trac de nuestro proyecto de prueba.
Autentificación
Para activar el login en nuestro entorno trac debemos añadir estas lineas al fichero de configuración de nuestro virtual host, en nuestro caso /etc/apache2/sites-available/pruebastrac
<Location /login> AuthType Basic AuthName "MyCompany Trac Server" AuthUserFile /var/lib/trac/prueba/.htpasswd Require valid-user </Location>
Como estamos autentificando contra los usuarios que tenemos en un fichero htpasswd debemos crearlo y añadir los usuarios deseados. También tendriamos la posibilidad de autentificación contra un servidor ldap pero de momento no es necesario:
#La primera vez para crear el fichero añadimos la opción -c htpasswd -c .htpasswd javi
Ahora ya podemos autentificarnos con nuestros usuarios y editar el wiki o añadir nuestros primeros tickets.
Integración Tickets & SVN
Podemos añadir un nivel de integración mayor entre nuestro repositorio de svn y nuestro trac para añadir comentario o cerrar un ticket cuando commiteamos cualquier cambio svn.
La idea general: consiste en invocar desde el post-commit del repositorio svn indicado al script trac-post-commit-hook que recibirá el nombre del repositorio y el número de versión, y este haciendo uso de svnlook obtendrá usuario, mensaje, etc, procesará el mensaje y si este contiene los caracteres correspondientes realizará una llamada por url para realizar la acción correspondiente sobre el ticket deseado.
Requisitos
Necesitamos tener instalados svnlook y svnnotify (este último lo obtenemos mediante el paquete libsvn-notify-perl).
Descargamos el script trac-post-commit-hook.
Descargamos el plugin SVNPolicies directamente desde el repositorio:
svn export http://code.optaros.com/svn/oforge/trunk/plugins/svnpoliciesplugin/
Instalando plugin SVNPolicies
Descomprimimos el fichero descargado y ejecutamos sobre el directorio:
sudo python setup.py bdist_egg
El cual nos genera un fichero .egg en el directorio dist, este fichero debemos copiarlo al directorio de plugins de nuestro entorno trac. Añadimos a nuestro trac.ini las siguientes lineas para activar el plugin:
[components] svnpolicies.* = enabled svnpolicies.admin.* = enabled svnpolicies.plugins.* = enabled [svnpolicies] commands.enabled = true svnlook = /usr/bin/svnlook svnnotify = /usr/bin/svnnotify svnpolicies_enabled = true trac_post_hook = /usr/local/bin/trac-post-commit-hook
Si tenemos el plugin WebAdmin podemos activarlo desde la interfaz web.
Tenemos mas información sobre la instalación de plugins en el manual del trac.
Configuramos hook svn
Copiamos el script trac-post-commit-hook a /usr/local/bin/. En nuestro directorio hooks del repositorio svn creamos el fichero post-commit si no lo tenemos ya y añadimos lo siguiente:
REPOS="$1" REV="$2" TRAC_ENV="path a nuestro proyecto trac" /usr/bin/python /usr/local/bin/trac-post-commit-hook -p "$TRAC_ENV" -r "$REV"
Con esto cada vez que hagamos un commit sobre este repositorio svn ejecutamos esta orden.
Sintaxis en comentarios svn
Ahora podemos dejar simplemente un comentario o cerrar un ticket si incluimos en el comentario de un commit las siguientes palabras mágicas:
Dejar comentario en ticket numero 1:
- addresses #1
- re #1
- references #1
- refs #1
- see #1
Cerrar ticket numero 2:
- close #2
- closed #2
- closes #2
- fix #2
- fixed #2
- fixes #2
Por supuesto esta sintaxis podemos cambiar simplemente editando el script trac-post-commit-hook para poner por ejemplo cerrar #1.
Configuración
Tenemos un fichero de configuración en /directorio_de_proyecto/conf/trac.ini donde podremos configurar aspectos como: envío de correos, nombre proyecto, icono e imagen de cabecera, componente milestone prioridad resolucion y versión por defecto, etc.