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.
- 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&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.
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.
0 comentarios