¿Sabías que Jenkins tiene soporte incorporado para la Integración Continua/Entrega Continua (CI/CD)? Implementar una tubería de CI/CD de Jenkins con tu proyecto puede mejorar significativamente tu proceso de desarrollo de software.
Jenkins es una de las herramientas de automatización más populares de DevOps hasta la fecha. Y si estás buscando comenzar con la tubería de CI/CD de Jenkins, has venido al lugar correcto.
Sigue leyendo, y en este tutorial aprenderás cómo configurar una tubería de CI/CD de Jenkins con GitHub.
Requisitos previos
Este tutorial asume que tienes los siguientes requisitos para seguir los ejemplos.
Debes tener instalado Jenkins. Los ejemplos en este tutorial utilizarán Jenkins v2.319.1 en una computadora con Windows 10 20H2.
- La consola web de Jenkins debe ser accesible a través de internet.
- A Github account to which you’ll connect with the Jenkins CI CD pipeline.
- Git SCM. Este tutorial utiliza la última versión (2.34.1) de 64 bits de Git para Windows.
Preparando el Repositorio de GitHub
Este tutorial implica la integración de un pipeline de Jenkins CI/CD con un repositorio de GitHub. En lugar de crear un proyecto en blanco, hacer un fork de un repositorio existente es más rápido para empezar.
1. Primero, abre un navegador e inicia sesión en tu cuenta de GitHub.
2. Luego, navega hacia la URL del repositorio de ejemplo (aplicación MyShuttle2 de Microsoft Connect 2016). Una vez que estés en la página del repositorio, haz clic en el botón Fork en la parte superior derecha de la página.

Espera a que termine el proceso de fork. Al final, tendrás el repositorio llamado “nombredeusuario/MyShuttle2” en tu cuenta de GitHub al que tienes acceso completo.
3. Ahora, añade un nuevo archivo al repositorio llamado Jenkinsfile. Un Jenkinsfile es un archivo de texto que contiene la definición de un Pipeline de Jenkins. Este archivo debe estar dentro del repositorio de código fuente.
En la página de tu repositorio, haz clic en Añadir archivo —> Crear nuevo archivo.

4. Escribe Jenkinsfile como el nombre del nuevo archivo. Luego, copia el código a continuación y pégalo en tu Jenkinsfile.
- El término pipeline es un conjunto de instrucciones escritas en código para la entrega continua.
- A stage block contains a series of steps in a pipeline, visualizing the Jenkins pipeline process.
- A step is a single task that executes a specific process at a defined time. A pipeline contains a series of steps.
Este Jenkinsfile es solo un ejemplo básico de un script de pipeline. En producción, los scripts de pipeline serán más complejos e incluirán múltiples acciones en uno o todos los pasos.
Después de escribir el código, tu archivo se verá como en la captura de pantalla a continuación.

5. Desplázate hacia abajo de la página y haz clic en Commit new file.

Ahora tienes un Jenkinsfile en tu repositorio.

6. Finalmente, copia la URL del repositorio. Para hacerlo, haz clic en Code y luego en el botón Copy. Necesitarás la URL resultante durante la creación del pipeline de Jenkins CI CD.

Creando un Pipeline de Jenkins CI CD
Desarrollar una característica implica muchos cambios de código. Entre cada cambio de código, hay un conjunto de tareas que realizar. Estas tareas pueden incluir la realización de cambios, compilación, pruebas y empaquetado.
Los servicios de automatización como Jenkins ayudan a que estos pasos sean rápidos y sin errores.
1. Abre un navegador, ve a tu URL de Jenkins e inicia sesión.
2. En el Tablero de Jenkins, haz clic en la opción Nuevo elemento en el menú de la izquierda.

3. Ingresa el nombre del nuevo pipeline. Para este tutorial, lo nombrarás demoPipeline y selecciona la plantilla Pipeline. Haz clic en OK para finalizar.

4. Marque la casilla del proyecto GitHub bajo la pestaña General en la página de configuración. Luego, pegue la URL del repositorio que copió anteriormente en el cuadro URL del Proyecto.

5. Desplácese hacia abajo hasta la sección de Disparadores de Compilación y marque la casilla Desencadenador de gancho GitHub para la revisión GITScm, como se muestra en la captura de pantalla a continuación.

6. A continuación, desplácese más hacia abajo hasta la sección de Pipeline y seleccione/especifique los siguientes valores:
- Definición: Script de Pipeline desde SCM
- SCM: Git
- URL del Repositorio: Su URL de repositorio

7. Desplácese hasta la parte inferior de la página y confirme que el valor de Ruta del Script sea Jenkinsfile. Este valor hace referencia al Jenkinsfile que creó anteriormente al preparar su repositorio de GitHub. Por último, haga clic en Guardar.

Configuración de un Webhook en GitHub
Para que Jenkins ejecute un nuevo trabajo, primero debe crear un webhook en el repositorio de GitHub. Este webhook notificará a Jenkins tan pronto como ocurra un nuevo push en el repositorio.
Siga los pasos a continuación para crear un Webhook.
1. Vaya a la página de Configuración y haga clic en la pestaña de Webhooks en su repositorio de GitHub. En la página de Webhooks, haga clic en Agregar webhook.

2. Especifique su URL de Jenkins y agregue /github-webhook/ en el campo de URL de carga útil. Por ejemplo, HTTP://jenkinsURLhere/github-webhook/.
También, cambie el valor del tipo de contenido a application/json.

3. En la selección de Qué eventos le gustaría activar este webhook, haga clic en la opción Permitirme seleccionar eventos individuales.

4. Desplácese hacia abajo y marque las casillas de Envíos y Solicitudes de extracción. Estas opciones garantizarán que GitHub envíe una carga útil a Jenkins durante estos eventos específicos.

5. Valide el webhook haciendo clic en el botón Agregar webhook en la parte inferior. Si la validación del webhook fue exitosa, verá una notificación en la parte superior de la página similar a la captura de pantalla a continuación.

Ejecución y activación del trabajo de canalización de Jenkins CI CD
Ahora que ha creado y configurado su canalización, ¿cómo sabe que la canalización funciona? Jenkins proporciona un complemento de Vista de etapa de canalización para ayudarlo a ver el estado de la canalización.
1. Para abrir el estado de la canalización, abra la canalización en Jenkins y haga clic en Estado. Como puede ver a continuación, el estado de Vista de etapa muestra No hay datos disponibles porque no ha habido un evento que desencadenaría la canalización.

2. Para generar datos iniciales de construcción, haz clic en Construir Ahora y espera a que el proceso de construcción se complete. Como puedes ver a continuación, la Vista de Etapa ahora tiene una entrada, indicando que no hay cambios en esta construcción.

3. Ahora, prueba el pipeline haciendo un commit de un nuevo archivo ficticio en el repositorio. Para hacerlo, regresa a tu repositorio de GitHub y haz clic en Agregar Archivo —> Crear archivo nuevo.
Ingresa ficticio como nombre del nuevo archivo y asegúrate de agregar contenido.

Finalmente, haz clic en Commit nuevo archivo en la parte inferior de la página.
4. Regresa a la página de estado del pipeline de Jenkins, y deberías ver una nueva entrada de construcción con un commit, como se muestra a continuación.

Conclusión
A lo largo de este tutorial, has aprendido cómo configurar un pipeline de Jenkins CI/CD para automatizar el ciclo de vida del desarrollo de software. También has aprendido cómo utilizar Jenkins para mantener una cadena de acciones para CI en un proyecto de software.
¿Crees que el pipeline de Jenkins CI/CD es una estrategia que aplicarías a tus proyectos? ¿O hay otro que ya tienes en marcha y crees que es una mejor solución de CI/CD?