jenkins

El día de hoy estuve trabajando en la configuración de un job en jenkins para automatizar algunas tareas de build y despliegue desde un repositorio git.

Dicha instalación de jenkins se está ejecutando en un equipo con Mac OS y noté algo raro.

Al hacer el fetch del repositorio, el job se quedaba en dicho paso hasta hacer un timeout y fallar la construcción.

salida de consola

Investigando un poco encontré que ese comportamiento puede ser ocasionado si las credenciales no son proporcionadas de manera correcta, sin embargo, en mi caso, me aseguré de realizarlo bien, sin éxito alguno.

origen codigo fuente

Después de algunas horas encontré un workaround, el cual consiste básicamente en establecer las credenciales por defecto de git para el usuario jenkins creando un «llavero» (keychain).

Por lo cual deseo compartir dicho proceso en este artículo.

Para esto ejecutar los siguientes comandos:

 # Iniciar sesión como usuario jenkins    
 sudo su - jenkins  
 # Crear el directorio en el cuál se almacenará el keychain  
 mkdir ~jenkins/Library/Keychains  
 # Ir al directorio creado  
 cd ~jenkins/Library/Keychains  
 # Crear el keychain proporcionando el password de seguridad  
 security create-keychain -p [pwd] ./Login.keychain  
 security login-keychain -d user -s ./Login.keychain  
 # Ir al directorio donde se encuentra el repositorio que intentó clonar  
 cd ~/Home/workspace/[directorio_proyecto]  
 # Intentar el fetch que falló  
 git fetch --tags --progress [URL_PROYECTO] +refs/heads/*:refs/remotes/origin/*

Una vez realizados estos pasos nos solicitará el usuario y contraseña de git y después de esto, no los volverá a pedir.

Podemos proceder a ejecutar nuestro job nuevamente y realizará el fetch de manera correcta.

Se que no es la mejor solución, sin embargo, es una opción para resolver este problema.

Si alguien conoce la manera de solucionarlo directamente desde el administrador de jenkins es bienvenido a contribuir en los comentarios.

También comparto la url a stackoverflow donde encontré este workaround https://stackoverflow.com/questions/42627269/jenkins-using-git-askpass-to-set-credentials