CI/CD
El pipeline de Jenkins se define en un archivo llamado Jenkinsfile
que debe residir en la raíz de tu repositorio. Para que Jenkins detecte y ejecute automáticamente este Jenkinsfile al producirse cambios, es necesario conectar Jenkins al repositorio (GitLab o GitHub) mediante el plugin correspondiente y configurar las credenciales y un webhook en la plataforma de Git, o bien habilitar el “polling” del repositorio desde Jenkins.
Estructura Básica de un Jenkinsfile
Dentro de un Jenkinsfile Declarativo encontraremos varias secciones clave:
- pipeline Bloque raíz que engloba toda la definición del pipeline.
- agent Define el nodo o entorno donde se ejecuta el pipeline (por ejemplo
any
, etiqueta de nodo o contenedor Docker). - environment Variables de entorno globales para todas las etapas.
- parameters Parámetros de entrada que permiten personalizar la ejecución (p. ej. rama, versión).
- options Opciones de ejecución, como tiempo máximo (
timeout
) o número de reintentos (retry
). - stages Conjunto de bloques
stage
, cada uno con su propiosteps
(comandos a ejecutar). - post Acciones que se disparan tras la ejecución, según el resultado (
success
,failure
,always
).
Ejemplo de skeleton de Jenkinsfile
pipeline {
agent any
stages {
stage('Build') {
agent {
docker { image 'node:14' }
}
steps {
sh 'npm install'
sh 'npm run build'
archiveArtifacts artifacts: 'build/**', fingerprint: true
}
}
stage('Test') {
agent {
docker { image 'node:14' }
}
steps {
sh 'npm test'
}
// En Jenkins, los artifacts del stage anterior están disponibles si se usan archiveArtifacts y se recuperan manualmente si es necesario.
}
stage('Deploy') {
steps {
sh './deploy.sh'
}
}
}
}
En este ejemplo:
- El pipeline está compuesto por tres stages: "Build", "Test" y "Deploy".
- Cada stage puede especificar el entorno de ejecución, en este caso usando la imagen de Docker node:14 para las etapas de build y test, asegurando un entorno consistente para la compilación y pruebas.
- En el stage Build, se instalan las dependencias y se construye la aplicación. Los archivos generados en la carpeta build/ se archivan como artifacts mediante archiveArtifacts, permitiendo que estén disponibles para etapas posteriores.
- El stage Test ejecuta los tests de la aplicación utilizando también la imagen node:14. En Jenkins, los artifacts generados en etapas previas pueden ser recuperados manualmente si es necesario.
- El stage Deploy ejecuta el script de despliegue (./deploy.sh). No se especifica una imagen Docker, por lo que se utiliza el agente configurado por defecto en Jenkins.
- La estructura declarativa del Jenkinsfile facilita la organización, reutilización y mantenimiento del pipeline, permitiendo además la integración con otras herramientas y la extensión de funcionalidades según las necesidades del proyecto.
Es recomendable revisar la documentación oficial de Jenkins Pipeline para ampliar las capacidades y personalizar los pipelines según los requisitos de tu entorno.
Para mantener el pipeline limpio y reutilizable, puedes crear una carpeta llamada jenkins-scripts o similar donde almacenar scripts auxiliares y funciones comunes, evitando la repetición de código y simplificando la definición de los stages.