Componentes principales de la arquitectura de Jenkins


En el artículo Jenkins visión general de la plataforma, vamos a mostrar la interfaz y sus principales características

oscar Escrito por oscar 19 September 2022 1011 0

Arquitectura Jenkins

En Jenkins, el concepto de controller y agent se refiere a una arquitectura distribuida diseñada para escalar y ejecutar trabajos de integración continua de forma eficiente.

🔹 ¿Qué es el Controller?

Es el nodo principal en Jenkins. Sus responsabilidades incluyen:

  • Ejecutar la interfaz de usuario web.
  • Servir como orquestador de los trabajos.
  • Gestionar la configuración de Jenkins.
  • Almacenar los logs, artefactos, y configuración global.
  • Asignar tareas a los esclavos (agentes), si están configurados.
  • También puede ejecutar jobs si no hay esclavos disponibles (aunque no es lo ideal en ambientes grandes).

🔹 ¿Qué es un Agent?

Es un nodo de trabajo que ejecuta las tareas que le asigna el maestro. Sus características:

  • Puede estar en la misma red o en otra ubicación (incluso en la nube).
  • Se conecta al maestro a través de SSH, JNLP, Docker, etc.
  • Puede estar configurado para ejecutar ciertos tipos de proyectos o tener ciertas etiquetas.
  • Ideal para distribuir la carga de trabajo, ejecutar jobs en diferentes entornos, sistemas operativos, configuraciones, etc.

🔹 ¿Por qué usar agentes?

  • Escalabilidad: puedes añadir más agentes según crece tu número de builds.
  • Aislamiento: puedes tener agentes dedicados para pruebas, builds en Linux, Windows, Mac, etc.
  • Seguridad: proteges el nodo maestro de ejecuciones potencialmente inseguras.
Jenkins controller y agentes
Jenkins controller y agentes

🔹 ¿Qué es un Nodo en Jenkins?

Un nodo es cualquier máquina física o virtual que Jenkins puede usar para ejecutar trabajos. Incluye:

  • ✅ El nodo maestro (ahora llamado controller).
  • ✅ Los nodos agentes (antes esclavos), conectados al maestro para ejecutar trabajos.

En resumen, todos los controladores y agentes son nodos.

🔹 ¿Qué es un Ejecutor (Executor)?

Un ejecutor es como un "slot" o hilo de ejecución dentro de un nodo, que permite ejecutar un trabajo a la vez.

  • Cada nodo puede tener uno o más ejecutores.
  • Si un nodo tiene 2 ejecutores, puede ejecutar 2 jobs al mismo tiempo.
  • Si se envían más trabajos que ejecutores disponibles, los trabajos adicionales esperan en cola.

🔹 Jobs (Proyectos o Tareas)

Un job es una tarea que Jenkins ejecuta. Puede ser un build, una prueba, un despliegue, etc.

Tipos comunes de jobs:

  • Freestyle Project
  • Pipeline
  • Multibranch Pipeline
  • Maven Project

🔹 Pipeline

Una pipeline es una secuencia de pasos escritos como código (en Groovy) que define cómo construir, probar y desplegar una aplicación.

pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        sh 'make build'
      }
    }
    stage('Test') {
      steps {
        sh 'make test'
      }
    }
    stage('Deploy') {
      steps {
        sh 'make deploy'
      }
    }
  }
}

🔹 Plugins

Jenkins tiene una arquitectura extensible basada en plugins. Hay miles de plugins que permiten integrarse con:

  • Git, GitHub, GitLab, Bitbucket
  • Docker
  • SonarQube
  • Slack
  • Kubernetes
  • AWS, Azure, GCP

🔄 Cómo funciona Jenkins paso a paso

📦 1. Desarrollador hace un push al repositorio (Git)

  • Se realiza un commit y push de código a GitHub, GitLab, etc.

📣 2. Webhook dispara Jenkins

  • Jenkins recibe una notificación vía webhook o por polling.

📋 3. Jenkins analiza y programa el job

  • Verifica qué job debe ejecutarse según el cambio.
  • Asigna el job a un nodo disponible (master o esclavo).

⚙️ 4. Se ejecuta el pipeline

  • Jenkins sigue los pasos del Jenkinsfile:
    • Descarga el código.
    • Ejecuta el build.
    • Corre pruebas.
    • Genera artefactos.
    • Despliega la app (si se configura).

📊 5. Jenkins guarda resultados

  • Muestra el historial de builds (exitosos o fallidos).
  • Envía notificaciones (Slack, correo, etc).

Interfaz gráfica Jenkins

Menú lateral

Este menú lo vamos a tener visible todo el tiempo y va a cambiar dependiendo la pantalla o contento donde estemos, mostrando los items de acuerdo a lo que se necesite ejecutar en el momento.

Barra superior

En esta barra vamos a encontrar el buscador principal, el usuario donde podemos acceder a su submenú, las notificaciones que la plataforma nos muestre y la opción de desconectare o cerrar sesión.

Submenú del usuario

En este menú del usuario podemos ver los items de las ejecuciones que se han realizado, y configuraciones que podemos hacer sirbe el mismo usuario

Lista de cola de trabajo

Este listado muestra la lista de todas las tareas que se están ejecutando en tiempo real

Tabla de tareas

Podemos ver el listado de todas las tareas creadas

 


Comentario

Debe aceptar antes de enviar