Seleccionar página

A la hora de instalar Hudson (http://hudson-ci.org) como servidor de integración contínua, ya disponíamos de la siguiente infraestructura:

  • Imagen virtualizada con Xen del S.O. Fedora Core 7.
  • Redmine como gestor de proyectos (www.redmine.org) sobre MySQL 5.0.45
  • Apache HTTPD versión 2.2.8-1 como frontal, forzando el paso a SSL y redirecciona al puerto de Redmine a través de mod_proxy.
  • Control de versiones Subversion.

Nuestra intención es utilizar los usuarios y grupos de Redmine con el objetivo de poder reutilizarlos y gestionarlos desde esta misma herramienta.

  • Por defecto, Hudson tiene los grupos admin, user y hudson. Desde el Redmine, creamos el grupo admin y asociarlo a nuestro usuario fsolans.

neodoo_redmine_user_x

neodoo_redmine_user_groups_x

  • Para ello, hemos creado la base de datos hudson y creado las siguientes vistas a partir de las tablas de la base de datos de redmine.

[root@neodoo]# mysql

mysql> create database hudson;

mysql> use hudson;

mysql> create view hudson.user_roles as select u.user_id, u.user_name, gu.group_id as role_id, r.role_name from users u, redmine.groups_users gu inner join roles r on r.role_id = gu.group_id where gu.user_id=u.user_id order by u.user_name;

mysql> create view hudson.roles as select id as role_id, lastname as role_name from redmine.users where type=”Group”;

mysql> create view hudson.users as select id as user_id, login as user_name, hashed_password as user_pass from redmine.users where type=”User”;

  • Instalar JDK y Apache Tomcat. Presupongo que ya lo sabéis hacer…
  • Descargar el proyecto Hudson que viene por defecto como un war. En mi caso, me descargué la versión 1.364 y lo descomprimí con unzip en /var/www/hudson/war.
  • Creamos el fichero hudson.xml y lo copiamos en $TOMCAT_HOME/conf/Catalina/localhost/. Aquí indicamos que vamos a a usar la autentificación de seguridad por JDBC.

<?xml version=”1.0″ encoding=”UTF-8″?>

<Context path=”” docBase=”/var/www/hudson/war/”>

<Realm className=”org.apache.catalina.realm.JDBCRealm” debug=”99″ driverName=”com.mysql.jdbc.Driver” digest=”SHA”
connectionURL=”jdbc:mysql://localhost/hudson?user=root&amp;password=xxx” userTable=”users” userNameCol=”user_name” userCredCol=”user_pass” userRoleTable=”user_roles” roleNameCol=”role_name” />

<Environment name=”HUDSON_HOME” value=”/var/www/hudson” type=”java.lang.String” override=”false”/>

<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs” pattern=”combined” prefix=”hudson_access_log.” resolveHosts=”true” suffix=”.txt”/>

<Logger className=”org.apache.catalina.logger.FileLogger” prefix=”hudson_log.” suffix=”.txt” timestamp=”true”/>

</Context>

  • Sólo nos falta rearrancar el contenedor Tomcat y abrir Hudson en nuestro navegador web. Por defecto, se accede sin ningún tipo de autentificación. Para securizarlo, ir a la opción ‘Administrar Hudson’ y poner tal cómo indica la captura de pantalla.

neodoo_hudson_auth_configure

Cómo se observa, se delega la autentificación al contenedor Tomcat y además añadimos los permisos que dispondrá los usuarios del grupo admin (podríamos poner otros para los grupos hudson y user).

¡ Et voilá ! Hudson tirando de los usuarios y grupos de Redmine con MySQL aunque es válido para cualquier base de datos.