Instalación de Jenkins como daemon en Mac OS X

Standard

 

logo-title

 

Qué tal, gente. En mi post anterior vimos un tutorial completo sobre la instalación y configuración de Jenkins en Ubuntu 14.04, el cual sería conveniente se tomara como referencia antes de leer esta publicación, para tener un entendimiento más amplio de lo que es en general Jenkins y algunos de sus usos básicos. Ya que cada sistema operativo es diferente en cuanto al proceso de instalación de esta herramienta en particular, hoy veremos algo un poco diferente en cuanto a su instalación en Mac OS X.

En esta ocasión comparto con ustedes mi primera experiencia al intentar instalar y configurar Jenkins de manera local, ésta  se trataba de una prueba de concepto en la cual mi cometido era lograr un build automático de una aplicación Android básica, mediante el poder de Jenkins, claro está. Pero resulta que no suele ser tan fácil como parece, o por lo menos en mi caso no lo fue.

Después de haber completado la instalación de manera “exitosa”, me topé con que al momento de configurar Jenkins para ejecutar builds automáticos para Android, tuve un problema persistente en cuanto a la localización del Android SDK, indispensable para generar el APK resultante al construir la aplicación. Intenté diversas soluciones que encontré en blogs, foros y demás, fracasando en cada intento, hasta que tomé la difícil pero muchas veces necesaria decisión de desinstalar por completo Jenkins y volver a comenzar desde cero. Al comenzar de nuevo seguí el tutorial  que dejo como referencia al final de este post, el cual fue justamente la instalación limpia que necesitaba para poder realizar el final de la prueba y generar un APK de mi aplicación Android.

Sin mayor preámbulo, comparto con ustedes la alternativa que después de bastante sufrimiento me dio el resultado esperado.

Obtener Jenkins

Lo primero que necesitamos hacer es obtener Jenkins. En una mac con Homebrew habilitado, esto sería tan simple como abrir una terminal y ejecutar el comando:

brew install jenkins

En el caso contrario, bastará con obtener el último instalador para mac. Además de esto, es necesario tomar en cuenta que  Jenkins requiere de Java7 o superior para funcionar. Es recomendado utilizar Java8. Todo esto se explica en el post anterior para Ubuntu.

Crear una cuenta de servicio

Teniendo la instalación lista, procedemos a crear una cuenta de servicio que nos permita interactuar con Jenkins. Para esto, nos cercioramos de que el id de usuario que usaremos se encuentre disponible. Buscamos entonces el id elegido (600):

dscl . -search /Users uid 600 and groups with dscl . -search /Groups gid 600

Ya que verificamos que el id de usuario no exista, mediante los siguientes comandos creamos y configuramos el usuario que nos ayudará a ejecutar Jenkins, el cual tendrá ese mismo nombre en minúsculas:

sudo mkdir /var/jenkins
sudo /usr/sbin/dseditgroup -o create -r 'Jenkins CI Group' -i 600 Jenkins
sudo dscl . -append /Groups/Jenkins passwd "*"
sudo dscl . -create /Users/Jenkins
sudo dscl . -append /Users/Jenkins RecordName jenkins
sudo dscl . -append /Users/Jenkins RealName "Jenkins CI Server"
sudo dscl . -append /Users/Jenkins uid 600
sudo dscl . -append /Users/Jenkins gid 600
sudo dscl . -append /Users/Jenkins shell /usr/bin/false
sudo dscl . -append /Users/Jenkins home /var/jenkins
sudo dscl . -append /Users/Jenkins passwd "*"
sudo dscl . -append /Groups/Jenkins GroupMembership Jenkins
sudo chown -R jenkins /var/jenkins

Crear el Daemon

Mac usa launchd para controlar daemons y agentes o servicios. Para crear nuestro daemon, seguiremos pasos tan simples como crear el archivo:

nano /Library/LaunchDaemons/org.jenkins-ci.plist

Con el siguiente contenido, basado en el plist de la formula Jenkins de homebrew:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>Jenkins</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/bin/java</string>
    <string>-jar</string>
    <string>/usr/local/Cellar/jenkins/1.414/lib/jenkins.war</string>
  </array>
  <key>OnDemand</key>
  <false/>
  <key>RunAtLoad</key>
  <true/>
  <key>UserName</key>
  <string>jenkins</string>
</dict>
</plist>

Es importante tomar en consideración que podría ser necesario actualizar el número de la versión en los argumentos del programa.

Posteriormente, sólo necesitamos ejecutar el daemon mediante el siguiente comando:

sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

O también podríamos simplemente reiniciar.

Y bien, eso es todo, ahora tenemos Jenkins instalado en nuestra mac y ejecutándose como un daemon, la configuración siguiente corre por su cuenta, dependiendo de sus necesidades.

Insisto, para dudas recomiendo consultar el post: instalación y configuración de Jenkins en Ubuntu 14.04. Aunque el proceso no es exactamente igual, puede resuelva algunos puntos que no se detallaron en esta publicación al seguir la máxima DRY, que reza Don’t Repeat Yourself.

Espero les haya sido de ayuda, ¡hasta luego!

Referencias:

Leave a Reply

Your email address will not be published. Required fields are marked *