Ambiente CI/CD con Jenkins

Contenido:

  • ¿Qué es Jenkins? 
  • Prácticas técnicas
  • Gestión de la Consola de Jenkins
  • Gestión de Jobs

¿Qué es Jenkins?

  • Es una herramienta de automatización / Servidor de automatización
  • Principales competidores de Jenkins:
    • Azure DevOps
    • GitHub Actions
    • GitLab
    • CloudBees
    • TC
  • ¿Porque utilizar Jenkins?
    • Jenkins es una herramienta Open Source.
    • Jenkins fue creada inicialmente para Java y luego fue abarcando otras tecnologías.
    • Jenkins es más  utilizado en entornos on-prmises, sin embargo, también funciona para cloud. 
    • Jenkins es la herramienta que cuenta con más plugins en el mercado a diferencia de sus competidores.
    • Jenkins es bastante robusto porque tiene como soporte a un lenguaje de programación por detrás. Esto es más poderoso que solo usar YAML.
  • En un ecosistema DevSecOps, Jenkins puede desempeñar un papel crucial como orquestador, ayudando a integrar la seguridad en todo el ciclo de vida del desarrollo de software.
  • Arquitectura de Jenkins. 
 

Prácticas técnicas

Las prácticas de "Integración Continua", "Entrega Continua" y "Despliegue Continuo" son esenciales en el desarrollo ágil y en la implementación de DevOps, permitiendo ciclos de desarrollo más rápidos y eficientes, y una mejor calidad de software.

  • Integración Continua (CI - Continuous Integration):
    • Desarrolladores -> Integración -> Pruebas Automatizadas -> Código Verificado
  • Entrega Continua (CD - Continuous Delivery):
    • Desarrolladores -> Integración -> Pruebas Automatizadas -> Código Desplegable -> (Despliegue Manual a Producción)
  • Despliegue Continuo (CD - Continuous Deployment):
    • Desarrolladores -> Integración -> Pruebas Automatizadas -> Código Desplegable -> Despliegue Automático a Producción

Integración Continua

La integración Continua es la epata donde generamos un compilado para cual se debe pasar por ciertas validaciones: pruebas unitarias, análisis de código estático, detección de secretos, análisis de dependencias, etc. Si todo está ok, el resultado final es un artefacto que sube a un repositorio de artefactos que luego podrá ser desplegado en cualquier ambiente.


Entrega Continua

Para poder desplegar en producción se requiere una intervención manual. 

Despliegue Continuo

El despliegue en producción es de forma automática. Este enfoque va a depender de la madurez de tus aplicaciones.


Gestión de la Consola de Jenkins

Gestión de Jobs

Levantar instancia Jenkins:
  • cd /home/galaxytraining/CURS-000168/s02/jenkins/01-install
  • docker-compose -f docker-compose-v1.yaml up -d
  • docker ps
Acceder al contenedor:
  • docker exec -it dde956c8226d bash

¿Qué es un Job?
  • En Jenkins, los "jobs" son unidades básicas de trabajo que Jenkins ejecuta. Un job puede representar cualquier cosa que necesita ser ejecutada regularmente, como una compilación de software, una prueba, una implementación o cualquier otro proceso automatizado. Aquí hay algunas de las funciones principales de los jobs en Jenkins:
    • Automatización de Compilación
    • Ejecución de Pruebas
    • Integración Continua
    • Entrega Continua
    • Despliegue Automatizado
    • Tareas de Mantenimiento
    • Notificaciones y Reportes
    • Integración con otras herramientas
  • Los jobs en Jenkins se configuran y ejecutan a través de la interfaz de Jenkins, y pueden ser desencadenados manualmente, por cambios en el control de versiones, en un horario determinado, o como parte de un pipeline de integración continua.
Tipos de Jobs
  • Freestyle Project: Son adecuados para tareas simples y configuraciones rápidas. Se usa la interfaz gráfica para su creación.
  • Pipeline: Ofrecen una mayor flexibilidad y son más adecuados para flujos de trabajo complejos y avanzados que requieren integración y entrega continua. Se contruyen usando código (Apache Groovy).

Ejercicios Freestyle Project
  • https://github.com/GalaxyTraining/CURS-000168/blob/master/s02/jenkins/02-jobs/lab02-jenkins-jobs/01_jobs.md

Ejercicios de Settings y Jobs
  • https://github.com/GalaxyTraining/CURS-000168/tree/master/s03
  • Para integrar Jenkinks y Docker
    • Bajamos el servicio: docker-compose -f docker-compose-v1.yaml down
    • Levantar servicio: docker-compose -f docker-compose-v3.yaml up -d

Pipelines como código

  • Configurar sonarqube: https://github.com/GalaxyTraining/CURS-000168/blob/master/s03/07-Configurar-Sonarqube.md



Comments

Popular posts from this blog

Week #1: Definición de objetivos, desglose de trabajo

Week #2: Azure App Service

Registro de Excepciones