Jenkins es un servidor de automatización para desarrollo de software y que permite implementar integración continua, ejecución de tests o automatizar despliegues de software. Es probablemente el software más utilizado en su clase y se puede utilizar para automatizar la compilación de aplicaciones para iOS en combinación con Fastlane.

En este artículo voy a explicar como se puede instalar en un mac usando homebrew, un gestor de paquetes para Mac. Como siempre, hay muchos procedimientos por Internet, pero al final contarlo de nuevo refuerza los que funcionen y quizás pueda ayudar a alguien que no pueda seguir el procedimiento en inglés.

Continuaré más adelante con algún artículo más sobre la automatización de la compilación de una apliación iOS.

Prerequisitos

Lo primero es tener instalado Homebrew. Para quien no lo conozca es un gestor de paquetes al estilo de apt-get o yum en sistemas linux. Se instala con un sencillo comando tal como se indica en su web:

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Para poder instalar Jenkins en un Mac es necesario tener Java 1.7 o superior. Para ello hay que bajar Java de la web de Oracle y si se necesita, como es mi caso tener varias versiones de Java funcionando, es útil instalar jenv por si tenemos varios entornos Java para gestionarlos.

Para instalar jenv lee el anexo al final del artículo.

Instalar Jenkins con brew

$ brew install jenkins

Para que se lance automáticamente al arrancar el Mac haremos lo siguiente:

$ mkdir -p ~/Library/LaunchAgents
$ ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

De esta forma se enlaza el plist que configura el servidor y queda en /Library/LaunchAgents/. Si no, ocurrirá que se copiará a esta carpeta automáticamente cada vez que lo lancemos y se borrará al pararlo, con lo que si cambiamos alguna propiedad del plist como ip o puerto en el que escucha, no podremos persistirla entre arranques.

Primer acceso a Jenkins

Una vez instalado podemos acceder abriendo un navegador y conectando al bucle local http://127.0.0.1:8080

Lo primero que tendremos que hacer es seguir las instrucciones en pantalla para introducir un valor secreto y dar por finalizada la instalación.

Acceder desde cualquier máquina en la red

Para acceder remotamente desde cualquier máquina de nuestra red local hay que editar ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist y cambiar

<string>--httpListenAddress=127.0.0.1</string>

por

<string>—httpListenAddress=0.0.0.0</string>

Actualización y mantenimiento

Al estar instalado mediante el gestor de paquetes brew el mantenimiento se puede hacer de dos formas:

  • Jenkins es capaz de auto-actualizarse (también los plugins)directamente desde el interfaz web.
  • Podemos usar brew update Jenkins para instalar la última versión que exista en el gestor de paquetes. Esto no afectará a los plugins instalados.

Si usamos brew debemos tener en cuenta que tendremos que repetir los pasos para enlazar el plist de arranque:

$ ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

Arrancar y parar Jenkins con brew

Existen varios comandos para manejar el servicio:

$ brew services start jenkins // Inicia el servicio
$ brew services stop jenkins // para el servicio
$ brew services reload jenkins // Lee de nuevo la configuración y lanza el servicio

Anexo: Cómo instalar jenv y poder tener varias versiones de Java en un mac

En primer lugar instalaremos jenv con brew

$ brew install jenv

Luego debemos instalar las versiones de Java que necesitemos. Lo podemos hacer también usando homebrew, y lo primero es utilizar brew-cask para actualizar obtener las versiones disponibles.

$ brew update
$ brew tap caskroom/cask
$ brew install brew-cask

Podemos ver las versiones disponibles con

$ brew tap caskroom/versions

entre las versiones posibles podemos instalar una haciendo simplemente:

$ brew cask install java

Con esto instalaremos la última que en este momento es Java 8. Otras vendran indicadas como "java6", "java7" y así. Con esto solo la instalamos en el Mac, pero hay que indicar a jenv que use estas versiones instaladas que podremos encontrar en /Library/Java/JavaVirtualMachines/

Añadimos las versiones que hayamos instalado a jenv con el comando add:

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/

Uso de jenv

Y ahora ya podemos usarlo. Para comprobar versiones instaladas con jenv podemos usar el comando versions:

$ jenv versions

podemos seleccionar una versión para trabajar con:

$ jenv global [nombre_version]

O lo que es más fascinante, podemos configurar que se use una versión de Java para una carpeta en concreto

$ cd [ruta/a/carpeta]
$ jenv local [nombre_version]