GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Qué es Jenkins?

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 :

  1. Defina la canalización a través de la interfaz de usuario directamente.
  2. 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ónde any 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 y Deploy , cada uno con sus respectivos steps { } .
  • 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.

Construir

En Jenkins, las compilaciones representan la ejecución única de un trabajo con la configuración actual. Una compilación crea software de diferentes fuentes definidas en el procedimiento del proyecto. Dependiendo del proyecto, los mecanismos de construcción incluyen:

  • Recopilación de dependencias.
  • Compilar o transformar código.
  • Materiales de archivo.
  • Pruebas.
  • Implementación en diferentes entornos.

Por lo tanto, una compilación es una ejecución de un proyecto definido con varios pasos.

¿Cómo funciona Jenkins?

Jenkins sigue los pasos de desarrollo desde la integración hasta la implementación , automatizando cada paso del camino.

Cada vez que un desarrollador publica una confirmación en el repositorio de código fuente, Jenkins activa una compilación. Por lo general, las confirmaciones se publican en una rama de desarrollo.

Los pasos de compilación incluyen probar el código, asegurándose de que la compilación no se rompa. Si ocurre algún error, Jenkins notifica al desarrollador para que actúe en consecuencia. Si pasan todas las pruebas, Pipeline continúa con los pasos de integración.

La integración lleva más tiempo y requiere probar el código en varias configuraciones del sistema. Jenkins realiza pruebas de integración en paralelo en diferentes nodos, lo que reduce el tiempo necesario para intentar integrar el código.

Más adelante en Pipeline, Jenkins automatiza las pruebas de aceptación del usuario, que es un requisito antes de la implementación. Si pasan todas las pruebas, el código se fusiona con la rama principal, lo que hace que el código esté disponible para los usuarios.

Características de Jenkins

Las principales características de Jenkins son:

  • Fácil instalación . El programa basado en Java es autónomo e independiente de la plataforma.
  • Fácil de configurar . La interfaz web fácil de usar hace que la configuración sea un proceso fácil. Para la configuración inicial, consulte nuestro tutorial de Jenkins.
  • Personalizable con disponibilidad masiva de complementos . Actualmente, hay más de 1700 complementos disponibles para ampliar la funcionalidad de Jenkins. Para cualquier función que falte, importe complementos adicionales externos o personalizados.
  • Código abierto . Jenkins es completamente de código abierto y de uso gratuito, por lo que es una tecnología económica de implementar.

Ventajas y desventajas de Jenkins

Jenkins viene con ciertas ventajas y desventajas. A continuación se muestra una descripción detallada de las ventajas y desventajas de trabajar con Jenkins.

Beneficios de Jenkins

Algunos beneficios que vienen con Jenkins son:

  • Ciclo de desarrollo más rápido . Las compilaciones y las pruebas en cada confirmación crean un entorno acelerado para deshacerse de los errores. Las nuevas funciones y versiones llegan al usuario final más rápido y con menos errores.
  • Menos tiempo para integrar el código . Antes de Jenkins, la integración del código era un proceso manual y la depuración del código era compleja. Alcanzar una versión funcional requeriría pasar por varias confirmaciones y analizar problemas. Al usar Jenkins, la integración después de cada confirmación garantiza que la funcionalidad del programa esté siempre disponible y operativa.
  • Comentarios rápidos para desarrolladores . Cada vez que se rompe una compilación, los desarrolladores se mantienen informados. El sistema de comentarios ayuda al equipo de desarrollo a abordar rápidamente los problemas en lugar de depurar numerosas confirmaciones.
  • Flujo de trabajo de canalización automatizado . Las pruebas automatizadas para cada confirmación se integran directamente en Pipeline.

Desventajas de Jenkins

A continuación se presentan algunas desventajas al trabajar con Jenkins:

  • Costo . Aunque Jenkins es gratuito, el programa requiere una infraestructura estable y robusta.
  • Mantenimiento constante . Mantener un servidor Jenkins lleva mucho tiempo. La adición de etapas a una canalización, la actualización del servidor con nuevas funciones y el seguimiento de actualizaciones de complementos requieren que un administrador reinicie y administre el servidor manualmente.
  • Centrado en el desarrollador . La plataforma está basada en funciones y no es muy fácil de usar para los no desarrolladores. Cierta experiencia de desarrollador es imprescindible cuando se trabaja con Jenkins.

Cómo instalar Jenkins

Jenkins funciona en varios sistemas operativos y entornos. La instalación está disponible en muchas formas, tales como:

  • Paquetes de instalación para los principales sistemas operativos, como Windows, Ubuntu, Debian, CentOS, etc.
  • Un archivo de archivo WAR.
  • Una imagen de Docker.
  • En un clúster de Kubernetes.
  • Compilación del código fuente.

Jenkins se ejecuta como un paquete independiente o en un servidor de aplicaciones Java. La interfaz de usuario está basada en la web y viene con una API REST en ambos casos.


Ubuntu
  1. ¿Qué es la nube de metal desnudo?

  2. ¿Qué es un marco de datos Spark?

  3. ¿Qué es Web 3.0?

  4. ¿Qué es JingOS Linux?

  5. Cómo usar el comando fuente dentro del script de canalización de Jenkins

¿Qué es 127.0.0.1 Localhost?

Cómo instalar Jenkins en Ubuntu 18.04

Cómo instalar Jenkins en Ubuntu 20.04 / Ubuntu 18.04

¿Qué es Localhost?

¿Qué es el envenenamiento de caché de DNS?

Cómo instalar Jenkins en Ubuntu 14.04

    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.