Introducción
Jenkins es una plataforma para crear un entorno de integración continua/entrega continua (CI/CD). El sistema ofrece muchas herramientas, lenguajes y tareas de automatización diferentes para ayudar en la creación de canalizaciones al desarrollar e implementar programas.
Aunque Jenkins requiere secuencias de comandos para algunos pasos de automatización, el programa proporciona una forma rápida y sólida de sistematizar el ciclo de vida del desarrollo de software.
Continúe leyendo para obtener más información sobre Jenkins y por qué es una de las herramientas DevOps líderes en la actualidad.
Definición de Jenkins
Jenkins es un servidor de automatización escrito en Java que ayuda a crear, probar e implementar continuamente software. El sistema de código abierto es actualmente uno de los principales servidores de automatización.
En general, Jenkins brinda soporte para:
- Varias herramientas de control de versiones como Git.
- Creación de proyectos basados en Ant y Apache Maven.
- Ejecución de scripts de Bash y archivos por lotes de Windows.
Una breve historia de Jenkins
El proyecto Jenkins comenzó en 2004 bajo el nombre de Hudson. El desarrollador Kohsuke Kawaguchi, que trabajaba en Sun Systems, quería crear un método para realizar la integración continua. La idea era probar el código antes de comprometerse para evitar romper compilaciones.
La idea resultó exitosa y rápidamente se extendió al resto de su equipo. Como resultado, Kohsuke Kawaguch creó el proyecto Jenkins y abrió el programa. El uso se extendió por todo el mundo con una estimación actual de 1,6 millones de usuarios .
¿Para qué se utiliza Jenkins?
Aunque Jenkins comenzó como una herramienta de integración continua, el uso actual cubre todo el proceso de entrega de software, incluida la implementación.
El programa ejecuta contenedores web y complementos, como Apache Tomcat, y ayuda a administrar el ciclo de vida y las solicitudes de derechos de acceso. Más de 1700 complementos para Jenkins enriquecen los procesos de integración, automatización y entrega de software y brindan un entorno personalizable.
Terminología básica de Jenkins
Jenkins abarca varias terminologías de DevOps a lo largo de diferentes opciones de administración y creación de canalizaciones. A continuación se muestra una lista con algunos términos comunes y su definición.
Oleoducto Jenkins
Jenkins Pipeline es un modelo creado por el usuario para la canalización de entrega continua. Pipeline incorpora varios complementos que ayudan a definir los pasos del procedimiento desde el control de versiones hasta los usuarios.
Todos los cambios y confirmaciones de software pasan por un proceso complejo antes del lanzamiento. El método incluye tres pasos :
- Construcción automatizada .
- Pruebas de varios pasos .
- Implementación procedimientos.
En Jenkins, hay dos formas de crear una canalización :
- Defina la canalización a través de la interfaz de usuario directamente.
- Usar el Pipeline como código metodología y crear un Jenkinsfile . El archivo de texto utiliza una sintaxis compatible con Groovy para definir el proceso de canalización.
El archivo Jenkins la sintaxis es declarativa o guion .
Un declarativo básico Archivo Jenkins tubería es más fácil de entender. Un ejemplo se parece a lo siguiente:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building…'
}
}
stage('Test') {
steps {
echo 'Testing…'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
}
}
}
}
El código tiene los siguientes elementos:
- La
pipeline { }
block invoca el complemento Jenkins Pipeline. - La palabra clave
agent
define dónde se ejecuta Pipeline, dóndeany
indica que Pipeline se ejecuta en cualquier agente disponible. - Las
stages { }
El bloque representa la secuencia en la que se ejecuta Pipeline. - El código contiene tres etapas:
Build
,Test
yDeploy
, cada uno con sus respectivossteps { }
. - Los
steps { }
decirle a Jenkins qué hacer en un punto en particular.
El guión equivalente al archivo Jenkins se parece a lo siguiente:
node {
stage('Build') {
echo 'Building…'
}
stage('Test') {
echo 'Testing…'
}
stage('Deploy') {
echo 'Deploying…'
}
}
Verificar un archivo Jenkins en una herramienta de control de código fuente permite que todo el equipo edite, revise y adapte los pasos en la canalización de entrega.
Integración continua
La integración continua es un procedimiento de desarrollo de software en el que cada cambio aplicado invoca una prueba de compilación automatizada. El proceso garantiza que el código se integre en un formato ejecutable funcional sin errores.
La integración continua es un aspecto esencial en entornos con múltiples desarrolladores. Cada desarrollador realiza cambios en el código y cada cambio tiene problemas potenciales.
Una herramienta de integración continua como Jenkins ayuda a probar, identificar y abordar problemas antes de aplicar cambios a la producción.
Pruebas automatizadas
Las pruebas automatizadas para la ejecución de pruebas predeterminadas de Jenkins y almacenan los resultados. La idea es garantizar que el código funcione en varios escenarios. La creación de pruebas automatizadas para distintos entornos, como varias versiones de Java o sistemas operativos, ayuda a prever y prevenir problemas en versiones posteriores.
Las fases de prueba automatizadas se integran en la tubería de CI en Jenkins sin problemas. Varios complementos ayudan a ejecutar pruebas unitarias, de integración, funcionales y de regresión y almacenan los resultados para verlos y analizarlos más tarde.
Controlador (Anteriormente Maestro)
La arquitectura de Jenkins se adapta a compilaciones distribuidas. Un nodo es la unidad central de control y organizador, conocido como controlador.
El controlador es el proceso central donde residen las configuraciones de Jenkins. Anteriormente conocido como Master, el controlador de Jenkins administra los agentes y sus conexiones, ayuda a cargar complementos y coordina el flujo del proyecto.
Agente (anteriormente esclavo)
Los agentes se conectan al controlador Jenkins para ejecutar proyectos. Los agentes requieren una instalación de Java en una máquina física o virtual, como instancias de Bare Metal Cloud, imágenes de Docker o clústeres de Kubernetes.
Los agentes en Jenkins ayudan a proporcionar un mejor rendimiento equilibrando la carga de las compilaciones y creando un entorno seguro, separado del controlador.
Nodo
Un nodo es un término general para agentes y controladores, independientemente de su función real. Cualquier máquina con la capacidad de crear proyectos y canalizaciones es un nodo de Jenkins, y el controlador se conoce como nodo integrado. .
El nodo integrado supervisa el estado de todos los nodos adjuntos y los desconecta si algún valor supera un umbral.
Proyecto (Anteriormente Trabajo)
Un proyecto de Jenkins, o un trabajo, es un procedimiento de automatización hecho por el usuario con un objetivo particular. Jenkins ofrece varios trabajos de compilación de forma predeterminada y hay más disponibles a través de complementos.
A continuación se muestra una tabla con una breve descripción de algunos tipos de proyectos.
Proyecto | Descripción |
---|---|
Estilo libre | Una tarea de construcción sin restricciones con múltiples operaciones. |
Pipeline | Un proyecto de varios pasos con varios agentes de compilación. |
Configuración múltiple | Un proyecto con múltiples entornos de prueba y diferentes configuraciones. |
Canalización de múltiples ramas | Un proyecto que crea un conjunto de proyectos de canalización de acuerdo con las ramas en un sistema de gestión de control de código fuente. |