Integración de #bitbucket y #jenkins


Para hacer integración continua la herramienta que usamos es Jenkins 1 (la versión 2 esta disponible hace tiempo pero no es compatible con algunos plugins que usamos), usualmente configurabamos nuestras tareas para hacer pooling del SCM (git alojado en bitbucket), sin embargo, hay una mejor alternativa.

Un amigo me recomendó leer el articulo (algo viejo pero aún vigente) Polling must die de Kohsuke Kawaguchi donde explica porqué la práctica de consultar períodicamente el estado del SCM para lanzar -si hay cambios- una construcción de proyecto, es ineficiente decidimos hacer el pequeño trabajo de integrar nuestros repositorios de Bitbucket con nuestra instalación de Jenkins.

Como primero es la “seguridad” (arggggh se nota que ya pienso como padre), pasamos a usar el plugin Role Strategy Plugin para generar un rol con el único permiso de lanzar builds para bitbucket (además del obvio role anonimo sin permisos y los roles administrativo y de desarrollador), luego creamos un usuario para bitbucket asociado al rol.

Luego con el plugin de Bitbucket obtenemos un endpoint https://ci.example.com/bitbucket-hook/ y en la configuración del proyecto checkeamos “Execution triggers >> Build when a change is pushed to BitBucket“, esto permitirá que bitbucket haga un llamado al endpoint y si la url del repositorio git coincide y existen cambios se lanza una construcción completa.

Finalmente en bitbucket, dentro de la configuración del repositorio añadimos un nuevo webhook (settings >> webhooks) con la url https://usuariojenkins:passwordjenkins@ci.example.com/bitbucket-hook/ y escogemos el trigger apropiado (push en el repositorio, pull request, cambio de estado de un ticket de soporte,  etc). En la consola de webhooks de bitbucket podemos consultar las respuestas a las ejecuciones de los webhooks.

Existe un método alternativo usando los servicios de integración de bitbucket (settings >> service >> jenkins ) que se describe en la wiki de Atlassian.

Acerca de Nickman

Aunque crítico e Ingeniero (especializado en software), piloto de aeroplano soy (seré).

Un pensamiento en “Integración de #bitbucket y #jenkins

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s