Instalación de Redmine (Bitnami) e integración con Subversion.

1
20767

Instalación de Redmine (Bitnami) e integración con Subversion.

0. Índice de contenidos.


1. Introducción

Redmine es un software de gestión de proyectos de
código abierto que nos permite llevar a cabo las tareas más comunes relacionadas con la asignación de tareas de
desarrollo o mantenimiento entre los miembros de un equipo de trabajo.

Además, nos permite:

  • la gestíon de múltiples proyectos,
  • llevar a cabo el tracking de incidencias,
  • añadir metadatos a las tareas, entradas de tiempo, proyectos y usuarios,
  • generar una gráfica Gantt y calendarios de tareas,
  • gestionar noticias, documentos y ficheros a nivel de proyecto,
  • notificación de eventos por mail,
  • disponer de una wiki y un foro por proyecto,
  • integración con el SCM
  • integrar la autenticación con el sistema de LDAP,
  • integrarnos con múltiples motores de base de datos.

Redmine está escrito en Ruby On Rails y permite, a través de un sistema de plugins, extender la funcionalidad de la
plataforma pudiendo, por ejemplo, llevar a cabo la instalación de paneles de Scrum para realizar la gestión ágil de un proyecto.

En este tutorial vamos a exponer cómo llevar a cabo la instalación de una manera muy simple, haciendo uso de un
paquete preparado con todo lo necesario para comenzar a usarlo y explicaremos cómo integrarlo con un repositorio de código: subversion.

La instalación la vamos a realizar sobre un Ubuntu Linux Server Edition 12.04 x86, virtualizado en un entorno VirtualBox.


2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15′ (2.4 GHz Intel Core i7, 8GB DDR3 SDRAM).
  • Sistema Operativo: Ubuntu Linux Server Edition 12.04 x86, sobre un Mac OS X Lion 10.7.5


3. Preparando el entorno de instalación.

Para realizar la instalación hemos elegido un sistema operativo linux y, en el ámbito de este tutorial, vamos a hacer uso de una
máquina virtual que esta ya lista para usar, descargada de http://virtualboxes.org/images/ubuntu-server/,
preparada para VirtualBox.

Seleccionamos la versión 12.04:

Y llevamos a cabo la descarga:

Aceptamos:

Y una vez lo tengamos desempaquetado en disco:

Levantamos el VirtualBox y seleccionamos «Nueva»

«Siguiente»…

Asignamos un nombre a la máquina y automáticamente se asigna el sistema operativo y la versión:

Redimensionamos la memoria disponible para la máquina virtual:

Seleccionamos un disco ya existente apuntando al fichero .vdi descargado.

Comprobamos la configuración y pulsamos sobre «Crear»

En este punto deberíamos disponer de una máquina más en nuestro listado.

Antes de arrancar, en la configuración de red vamos a comprobar que tenemos configurado un puente de comunicaciones entre la máquina virtual y nuestra máquina, para que dispongamos de red

Si todo ha ido bien, deberíamos poder acceder al sistema operativo, con el usuario ubuntu y la contraseña reverse

Yo he tenido problemas con la red, por el nombre asignado a la interfaz de comunicaciones y he tenido que modificar el contenido del fichero /etc/network/interfaces.

Para ello:

  • con el comando ifconfig -a comprobamos el nombre de la interfaz de red, y
  • editamos el fichero /etc/network/interfaces para hacer referencia al mismo nombre de tarjeta.

Podemos reiniciar la configuración de red con el comando sudo /etc/init.d/networking restart

Adicionalmente podemos:

  • configurar el timezone del sistema con el comando dpkg-reconfigure tzdata,
  • modificar el nombre del host que viene por defecto de ubuntu a redmine con el comando sudo nano /etc/hostname
  • añadir una línea al fichero de hosts para asignar un host apuntando a local con el comando sudo nano /etc/hosts,
    127.0.0.1 redmine.domain.com redmine

Todas estas modificaciones las podemos realizar desde el terminal de la ventana de VirtualBox o conectarnos vía ssh a la máquina virtual y trabajar con el terminal de nuestro sistema operativo (Terminal de Mac y un Cygwin en Windows)


4. Instalación.

En esta ocasión hemos elegido el camino más corto y para llevar a cabo la instalación vamos a descargarnos un paquete
de Bitnami que nos proporciona un entorno listo para usar del software opensource más popular.

En el caso de la pila de producto de redmine nos vamos a beneficiar de una empaquetación preparada para instalar:

  • Apache Web Server con el soporte de ruby y las gemas necesarias para hacer correr la aplicación,
  • una instalación de mysql, con el soporte de PhpMyAdmin instalado en el Apache Web Server,
  • una instalación de subversion, y
  • una instalación de redmine configurada en el Apache Web Server, lista para usar,

todo ello, en un único paso.

Para realizar la descarga deberíamos acceder al siguiente enlace y pulsar sobre la descarga del instalador:

Si bien, como estamos en un entorno linux, sin intefaz gráfica, vamos a proceder a la descarga mediante el comando wget, directamente apuntando a la url
(http://bitnami.com/redirect/to/17655/bitnami-redmine-2.3.0-0-linux-installer.run):

Una vez descargado, debemos darle al fichero permisos de ejecución (chmod +x) y podemos proceder a la ejecución del instalador:

Seleccionamos el idioma de la instalación

Admitimos la instalación del paquete PhpMyAdmin y seleccionamos el directorio de instalación

Asignamos una cuenta de usuario que se tomará para el acceso a la administración de redmine, la contraseña será la del usuario root en la base de datos mysql:

Asignamos un idioma por defecto a los datos

Nos permite configurar un sistema de envío de correo electrónico, con una configuración rápida para gmail:

Una vez hecho esto podemos comenzar la instalación:

Cuando nos confirme su terminación correctamente podemos seleccionar que arranque los servicios para levantar redmine:

En este punto podemos acceder a la aplicación por el puerto 80. En mi caso, desde mi máquina con un navegador y apuntando a la IP de la máquina virtual,
tendríamos el siguiente resultado:

Si pulsamos sobre el enlace de acceso o accedemos a la url de redmine, tendremos un resultado como el que sigue:

Podemos acceder con el usuario y contraseña asignados durante la instalación y en la «Administración» > «Configuración»:

  • modificar el nombre, para que se muestre en la cabecera, y
  • cambiar la ruta de la aplicación para que en los correos electrónicos se enlace con las actividades correctamente

En la pestaña de autenticación podemos modificar los parámetros para que:

  • el acceso a Redmine no sea público (con un usuario anónimo) y siempre solicite login, y
  • para que no permita el registro de usuarios y sólo pueda registrarlos un perfil de administración.



5. Integración con subversion.

Como hemos comentado el stack de bitnami nos instala una distribución de subversion lista para usar y lo interesante es la
posibilidad de integrarlo en Redmine para que:

  • los usuarios con acceso a los repositorios sean los habilitados a nivel de proyecto en redmine,
  • los repositorios estén accesibles vía http mediante el Apache Web Server y desde la propia interfaz de exploración de los repositorios en Redmine y
  • al crear un proyecto en Redmine se cree automáticamente el repositorio de código para el mismo.


5.1. Habilitar el acceso vía http.

Para habilitar el acceso a los repositorios en el Apache Web Server, editamos el fichero httpd.conf que encontraremos en el
directorio de instalación /opt/redmine-2.3.0-0/apache2/conf para incluir las siguientes líneas, de modo que se carguen los módulos
de dav para svn y perl:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule perl_module modules/mod_perl.so

A continuación, debemos copiar el fichero Redmine.pm que se encarga de realizar la autenticación de usuarios contra la base de datos
de Redmine.

cp /opt/redmine-2.3.0-0/apps/redmine/htdocs/extra/svn/Redmine.pm opt/redmine-2.3.0-0/perl/lib/site_perl/5.8.8/*/Apache/

Lo siguiente es crear el directorio raíz de nuestro repositorio como sigue

mkdir /opt/redmine-2.3.0-0/repository
mkdir /opt/redmine-2.3.0-0/repository/svn
chown root:daemon /opt/redmine-2.3.0-0/repository/ 
chown root:daemon /opt/redmine-2.3.0-0/repository/svn/ 
chmod 0755 /opt/redmine-2.3.0-0/repository
chmod 0750 /opt/redmine-2.3.0-0/repository/svn

El penúltimo paso es añadir la siguiente configuración al fichero redmine.conf que encontraremos en /opt/redmine-2.3.0-0/apps/redmine/conf

PerlLoadModule Apache::Redmine
  
  DAV svn
  SVNParentPath "/opt/redmine-2.3.0-0/repository/svn" 
  Order deny,allow
  Deny from all
  Satisfy any

  PerlAccessHandler Apache::Authn::Redmine::access_handler
  PerlAuthenHandler Apache::Authn::Redmine::authen_handler
  
  AuthType Basic
  AuthName "Redmine SVN Repository" 
  Require valid-user
  AuthUserFile /dev/null

  #read-only access   
  <Limit GET PROPFIND OPTIONS REPORT>
     Require valid-user
     Allow from localhost
     # Allow from another-ip
     Satisfy any
  </Limit>
  # write access
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>

  ## for mysql
  RedmineDSN "DBI:mysql:database=bitnami_redmine;host=localhost;mysql_socket=/opt/redmine-2.3.0-0/mysql/tmp/mysql.sock" 

  RedmineDbUser "bitnami" 
  RedmineDbPass "bitnami_database_password"    
  #Podemos encontrar la contraseña de base de datos en el fichero /opt/redmine-2.3.0-0/apps/redmine/htdocs/config/database.yml
</Location>

Por último, debemos reiniciar el servicio de apache de la siguiente forma:

sudo /opt/redmine-2.3.0-0/ctlscript.sh restart apache


5.2. Creación automática de los repositorios.

Redmine proporciona un script que realiza una consulta a un servicio web para conocer qué proyectos existen y, si es necesario, crea los repositorios en el SCM.

Lo primero que debemos hacer es habilitar ese servicio web, generando además una key para que el script pueda autenticarse en el servicio. Para ello, debemos acceder a la administración de redmine > Configuración > Repositorios

Una vez habilitado debemos añadir la siguiente línea al cron, podemos ejecutar sudo crontab -e para añadir

*/2 * * * * /opt/redmine-2.3.0-0/ruby/bin/ruby /opt/redmine-2.3.0-0/apps/redmine/htdocs/extra/svn/reposman.rb --redmine localhost/redmine --svn-dir /opt/redmine-2.3.0-0/repository/svn --owner root --group daemon --command="/opt/redmine-2.3.0-0/subversion/bin/svnadmin create --pre-1.6-compatible --fs-type fsfs" --url http://localhost/svn --key=la_clave_del_servicio_web_generada --verbose >> /var/log/reposman.log 

Podemos comprobar el resultado de la ejecución del proceso de creación de repositorios revisando los logs del mismo

/var/log/reposman.log

si no se llegase a crear el fichero de log podría existir algún error en su definición que podríamos revisar en los logs del sistema

/var/log/syslog

En la creación de los repositorios no se crea la estructura típica de directorios que creamos manualmente (trunk, branch, tags),
pero podemos modificar el script reposman.rb para incluir lo siguiente y lanzar los comandos que lo hagan automáticamente:

  log("\trepository #{repos_path} created", :level => 1);
  # después de crear el repositorio creamos su esctructura de directorios  
  system_or_raise "/opt/redmine-2.3.0-0/subversion/bin/svn mkdir file://"+repos_path+"/trunk -m \"trunk base directory\""
  system_or_raise "/opt/redmine-2.3.0-0/subversion/bin/svn mkdir file://"+repos_path+"/tags -m \"tags base directory\""
  system_or_raise "/opt/redmine-2.3.0-0/subversion/bin/svn mkdir file://"+repos_path+"/branches -m \"branches base directory\""
  log("\tautocreating directory for repository #{repos_path}: ", :level => 1);


6. Trabajando en un proyecto.

Si creamos un proyecto en redmine

tras un par de minutos podremos comprobar que se crea el repositorio con el identificador de proyecto asociado:

Para añadir un nivel de autenticación debemos dar de alta usuarios en la aplicación y asociarlos al proyecto con un rol.
Si, al crear el proyecto, desmarcamos el check para que no sea público solicitará autenticación.

Debemos tener en cuenta que al borrar un proyecto en redmine, no se borra automáticamente el repositorio correspondiente en disco.

Ahora, si nos autenticamos desde un cliente cualquiera de SVN, podríamos comenzar a trabajar con el proyecto con los siguientes beneficios:

  • podemos hacer referencia a un ticket de redmine en el mensaje de un commit de SVN anteponiendo
    una serie de claves, por ejemplo: refs #4
  • podemos marcar una petición como cerrada incluyendo directamente en el comentario de un commit un mensaje del tipo fixes #4.


7. Referencias.


8. Conclusiones.

Hemos dado pocos pasos, los primeros, pero ya tenemos el sistema listo para empezar a usarlo.
Ahora nos queda explorar los puglins de Redmine para extender su funcionalidad.

Un saludo.

Jose

jmsanchez@autentia.com

1 COMENTARIO

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad