Jenkins sobre Docker
Jenkins es una conocida herramienta open-source de integración continua.Es muy útil en desarrollo de software para automatizar compilaciones, pruebas de unidad e integración, y despliegues.
Hoy vamos a aprender a configurar Jenkins en un contenedor de Docker para automatizar la compilación y un test de unidad sobre un proyecto alojado en GitHub.
En primer lugar nos pide la contraseña de administrador. Para averiguarla, podemos ejecutar:
A la hora de crear una tarea de tipo pipeline tenemos dos opciones:
Como podemos ver, el test se compone de la etapa de descarga del proyecto más las dos que hemos definido en el Jenkinsfile.
Hoy vamos a aprender a configurar Jenkins en un contenedor de Docker para automatizar la compilación y un test de unidad sobre un proyecto alojado en GitHub.
Para este ejemplo emplearemos el proyecto JSex, un intérprete de expresiones sobre objetos JSON.
Instalar Docker y Jenkins
En este tutorial partimos con Docker instalado. Si no lo tenemos instalado, podemos hacerlo siguiendo las instrucciones de Docker Store.
Creamos y ejecutamos un nuevo contenedor para Jenkins:
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins -v jenkins_home:/var/jenkins_home jenkinsci/jenkinsExplicación:
docker run
crea y ejecuta un nuevo container. Si la imagen (jenkinsci/jenkins) no se encuentra, la descarga de Docker Hub.-d
lanza el contenedor en modo daemon (demonio), es decir, lo hace funcionar en segundo plano.-p 8080:8080
enlaza el puerto 8080 de nuestro host al puerto 8080 del contenedor. Esto permite acceder a la interfaz web a través de localhost.-p 50000:50000
publica igualmente el puerto 50000 para la API de Jenkins.--name jenkins
asigna el nombre "jenkins" al contenedor.-v jenkins_home:/var/jenkins_home
crea un volumen de datos llamado "jenkins_home" para guardar los datos aunque paremos o eliminemos el contenedor.jenkinsci/jenkins
es el nombre de la imagen oficial de Jenkins.
Configuración de Jenkins
Accedemos a la interfaz web de Jenkins mediante la dirección "localhost:8080":
Jenkins recién instalado. |
En primer lugar nos pide la contraseña de administrador. Para averiguarla, podemos ejecutar:
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
La introducimos y realizamos la instalación por defecto, seleccionando "Install suggested plugins" en la siguiente pantalla. A continuación nos pide crear un nuevo usuario. Rellenamos los campos que aparecen y aceptamos.
Menú principal de Jenkins. |
Preparar entorno de desarrollo
Este paso es necesario para que Jenkins pueda compilar el proyecto JSex en concreto. Necesitaremos el compilador GNU CC y la herramienta GNU Make.
El contenedor de Jenkins funciona sobre una imagen basada en Debian, de modo que instalaremos estas dependencias utilizando apt-get, dentro del contenedor:
docker exec -u root jenkins bash -c "apt-get update && apt-get -y install gcc make"
Diseñar pipeline para Jenkins
Un pipeline de Jenkins es el conjunto de etapas de pruebas que se va a ejecutar. Para este proyecto hemos diseñado un pipeline de dos etapas:
- Build, para compilar el proyecto y verificar que no hay errores de compilación.
- Test, para ejecutar un script de pruebas unitarias.
Este pipeline se guarda en un archivo con nombre Jenkinsfile, dentro del proyecto en GitHub:
pipeline { agent any stages { stage('Build') { steps { sh 'make' } } stage('Test') { steps { sh './test.sh' } } } }
Añadir proyecto a Jenkins
Volvemos a Jenkins y seleccionamos "New Item", a la izquierda. Vamos a crear una tarea de tipo Pipeline:
Jenkins: nueva tarea. |
A la hora de crear una tarea de tipo pipeline tenemos dos opciones:
- Escribir un Jenkinsfile en la propia configuración.
- Utilizar un Jenkinsfile de un repositorio de GitHub.
Ya que tenemos el Jenkinsfile en el proyecto de GitHub, utilizaremos la última opción, seleccionando la opción "Pipeline script from SCM". Entonces ponemos la dirección del proyecto en GitHub:
Definición de la tarea pipeline. |
Ejecutar un test
Por último, para lanzar una prueba, pulsamos "Build Now" en el menú lateral y esperamos los resultados:
Resultado del test en Jenkins. |
Como podemos ver, el test se compone de la etapa de descarga del proyecto más las dos que hemos definido en el Jenkinsfile.
Estos son los pasos básicos para comenzar a utilizar Jenkins. A partir de aquí podemos instalar Jenkins directamente en un servidor (sin Docker) o crear una imagen de Docker personalizada, que incluya los programas que necesitamos.
Comentarios
Publicar un comentario