En este tema, aprenderemos cómo configurar una pipeline de Entrega Continua (CD) en Jenkins. La Entrega Continua es una práctica de desarrollo de software en la que el código se construye, prueba y despliega automáticamente en un entorno de producción o preproducción. Esto permite a los equipos de desarrollo entregar software de manera más rápida y confiable.
Objetivos de Aprendizaje
- Entender los conceptos básicos de una pipeline de CD.
- Configurar una pipeline de CD en Jenkins.
- Integrar pruebas automatizadas en la pipeline.
- Desplegar automáticamente a un entorno de producción o preproducción.
Conceptos Básicos de una Pipeline de CD
Una pipeline de CD generalmente incluye los siguientes pasos:
- Construcción: Compilar el código fuente y generar artefactos.
- Pruebas: Ejecutar pruebas automatizadas para asegurar la calidad del código.
- Despliegue: Desplegar los artefactos en un entorno de producción o preproducción.
Configuración de una Pipeline de CD en Jenkins
Paso 1: Crear un Nuevo Trabajo de Pipeline
- Abre Jenkins y navega al tablero principal.
- Haz clic en "Nuevo Item" (New Item).
- Introduce un nombre para el trabajo, selecciona "Pipeline" y haz clic en "OK".
Paso 2: Definir la Pipeline en el Jenkinsfile
Un Jenkinsfile es un archivo que contiene la definición de la pipeline como código. Aquí hay un ejemplo básico de un Jenkinsfile para una pipeline de CD:
pipeline { agent any stages { stage('Build') { steps { echo 'Building...' // Aquí irían los comandos para compilar el código } } stage('Test') { steps { echo 'Testing...' // Aquí irían los comandos para ejecutar las pruebas } } stage('Deploy') { steps { echo 'Deploying...' // Aquí irían los comandos para desplegar el código } } } }
Paso 3: Configurar el Repositorio de Código Fuente
- En la configuración del trabajo, desplázate hasta la sección "Pipeline".
- Selecciona "Pipeline script from SCM".
- Configura el sistema de control de versiones (por ejemplo, Git) y proporciona la URL del repositorio y la rama donde se encuentra el Jenkinsfile.
Paso 4: Integrar Pruebas Automatizadas
Para integrar pruebas automatizadas, puedes usar herramientas como JUnit, Selenium, etc. Aquí hay un ejemplo de cómo integrar pruebas JUnit en la pipeline:
pipeline { agent any stages { stage('Build') { steps { echo 'Building...' // Comandos para compilar el código } } stage('Test') { steps { echo 'Testing...' // Comandos para ejecutar las pruebas junit 'target/test-results/*.xml' } } stage('Deploy') { steps { echo 'Deploying...' // Comandos para desplegar el código } } } }
Paso 5: Desplegar Automáticamente
El despliegue automático puede variar dependiendo del entorno y las herramientas que estés utilizando. Aquí hay un ejemplo de cómo desplegar a un servidor usando SSH:
pipeline { agent any stages { stage('Build') { steps { echo 'Building...' // Comandos para compilar el código } } stage('Test') { steps { echo 'Testing...' // Comandos para ejecutar las pruebas junit 'target/test-results/*.xml' } } stage('Deploy') { steps { echo 'Deploying...' sshagent(['my-ssh-credentials']) { sh 'scp target/my-app.jar user@server:/path/to/deploy' sh 'ssh user@server "java -jar /path/to/deploy/my-app.jar"' } } } } }
Ejercicio Práctico
Ejercicio 1: Crear una Pipeline de CD Básica
- Crea un nuevo trabajo de pipeline en Jenkins.
- Define un Jenkinsfile que incluya las etapas de construcción, pruebas y despliegue.
- Configura el repositorio de código fuente.
- Integra pruebas automatizadas usando JUnit.
- Configura el despliegue automático a un servidor.
Solución del Ejercicio 1
pipeline { agent any stages { stage('Build') { steps { echo 'Building...' // Comandos para compilar el código } } stage('Test') { steps { echo 'Testing...' // Comandos para ejecutar las pruebas junit 'target/test-results/*.xml' } } stage('Deploy') { steps { echo 'Deploying...' sshagent(['my-ssh-credentials']) { sh 'scp target/my-app.jar user@server:/path/to/deploy' sh 'ssh user@server "java -jar /path/to/deploy/my-app.jar"' } } } } }
Resumen
En esta sección, hemos aprendido cómo configurar una pipeline de CD en Jenkins. Hemos cubierto los conceptos básicos de una pipeline de CD, cómo definir una pipeline en un Jenkinsfile, cómo integrar pruebas automatizadas y cómo desplegar automáticamente a un entorno de producción o preproducción. Con estos conocimientos, estarás preparado para implementar pipelines de CD efectivas y eficientes en tus proyectos.
En el próximo tema, exploraremos cómo automatizar despliegues en mayor detalle, incluyendo estrategias de despliegue y herramientas avanzadas.
Jenkins: De Principiante a Avanzado
Módulo 1: Introducción a Jenkins
Módulo 2: Conceptos Básicos de Jenkins
- Visión General del Tablero de Jenkins
- Creación y Ejecución de Trabajos
- Entendiendo las Pipelines de Jenkins
- Usando Plugins de Jenkins
Módulo 3: Pipelines de Jenkins
- Pipeline como Código
- Pipelines Declarativas vs Scriptadas
- Creando una Pipeline Simple
- Sintaxis de Pipeline
Módulo 4: Pipelines Avanzadas de Jenkins
- Etapas y Pasos de Pipeline
- Ejecución Paralela en Pipelines
- Usando Variables de Entorno
- Mejores Prácticas de Pipeline
Módulo 5: Administración de Jenkins
- Gestionando Nodos de Jenkins
- Configurando Seguridad
- Respaldo y Restauración de Jenkins
- Monitoreando Jenkins
Módulo 6: Integrando Jenkins
- Integración con Sistemas de Control de Versiones
- Integración con Herramientas de Construcción
- Integración con Herramientas de Pruebas
- Integración con Herramientas de Despliegue
Módulo 7: Jenkins para Integración Continua y Entrega Continua (CI/CD)
- Entendiendo CI/CD
- Configurando una Pipeline de CI
- Configurando una Pipeline de CD
- Automatizando Despliegues
Módulo 8: Temas Avanzados de Jenkins
- Usando Jenkins con Docker
- Jenkins y Kubernetes
- Jenkins como Código con Jenkinsfile
- Escalando Jenkins