Jenkins

0
(0)

Jenkins

¡Hola a todos 🖐🏻!

Les doy una cálida bienvenida a este blog sobre Jenkins. Aquí encontrarán una introducción detallada a lo que es CI/CD (Integración y Entrega Continua), y cómo Jenkins se ha convertido en una herramienta esencial para optimizar el proceso de desarrollo de software. Espero que este contenido les sea útil y les ayude a comprender cómo la automatización de tareas con Jenkins puede mejorar la calidad y eficiencia de sus proyectos. ¡Vamos a sumergirnos en el mundo de CI/CD y Jenkins! 🚀👨🏻‍💻👨🏻‍🏫🧧

¡Espero que disfruten la lectura!

 

¿Qué es CI/CD?

CI/CD (Integración Continua/Despliegue Continuo o Entrega Continua) es una práctica de desarrollo de software que automatiza y optimiza el proceso de integración, prueba y despliegue de código.

  • Integración Continua (CI): Automatiza la integración de cambios de código en un repositorio compartido, garantizando que cada cambio sea probado de inmediato para identificar errores rápidamente.
  • Entrega/Despliegue Continuo (CD): Automatiza el despliegue del código en entornos de producción o preproducción de forma regular, asegurando entregas rápidas, consistentes y de alta calidad.

¿Para qué sirve Jenkins?

Jenkins es una herramienta de integración continua (CI) y entrega continua (CD) ampliamente utilizada en el desarrollo de software. Su principal propósito es automatizar tareas repetitivas en el ciclo de vida del desarrollo de software, como la construcción, prueba y despliegue de aplicaciones.

Se integra con una amplia gama de herramientas de desarrollo, sistemas de control de versiones y servidores de despliegue, lo que permite mantener la calidad del software mientras se acelera el proceso de desarrollo.

Características principales

  1. Automatización Extensible:
    Jenkins admite cientos de complementos que se pueden agregar para ampliar su funcionalidad, incluyendo integración con Docker, Kubernetes, Git, Maven y más.

  2. Open Source:
    Jenkins es una herramienta gratuita y de código abierto, con una comunidad activa que constantemente mejora su funcionalidad.

  3. Compatibilidad Multiplataforma:
    Funciona en casi cualquier sistema operativo, incluidos Windows, macOS y Linux.

  4. Interfaz Amigable:
    Proporciona una interfaz web para configurar y gestionar pipelines y trabajos, lo que facilita su uso incluso para desarrolladores menos experimentados.

  5. Distribución de Tareas:
    Permite distribuir las tareas en varios nodos (agentes), lo que mejora la eficiencia y reduce los tiempos de ejecución.

  6. Soporte para Pipelines como Código:
    Los pipelines se pueden definir utilizando archivos de configuración como Jenkinsfile, escritos en Groovy, permitiendo versionar la configuración junto con el código fuente.

  7. Integración con Sistemas de Control de Versiones:
    Compatible con Git, Subversión, Mercurial y otros sistemas de control de versiones.

  8. Notificaciones y Reportes:
    Ofrece notificaciones por correo, Slack, y otras plataformas, además de reportes detallados de construcción y pruebas.

Fecha de lanzamiento

Jenkins fue lanzado en 2005 bajo el nombre de Hudson, creado por Kohsuke Kawaguchi mientras trabajaba en Sun Microsystems para automatizar tareas en el desarrollo de software. En 2011, tras desacuerdos con Oracle, el proyecto se bifurcó y adoptó el nombre de Jenkins. Desde entonces, se ha consolidado como una herramienta clave de CI/CD con una comunidad activa y constante evolución.

 

Instalación

  1. Instalaremos Jenkins en nuestro equipo mediante docker. Ingresa este comando en tu cmd. Nota: La ruta que esta en negrita sera tu ruta en donde almacenes la instalación de Jenkins con docker. Te recomiendo en Documentos y que el directorio tenga un nombre sin espacios.
  • Si el puerto 8080 lo tienes ocupado cámbialo en el comando según tu necesidad.

docker run -d –name jenkins-RecursoIterativo -u root -p 8089:8080 -p 50000:50000 -v D:Documentos5.RecursoInteractivoJenkins:/var/jenkins_home -v //var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts

Implementación

  1. Después de tener instalado Jenkins. Crearemos un repositorio en github donde albergaremos nuestro proyecto. El repositorio deberá estar publico para una configuración mas sencilla.
  2. En nuestro proyecto añadiremos en la raíz del proyecto. Los archivos Jenkisnfile y Dockerfile. (Estos dos archivos deberán tener el nombre que acabamos de mencionar. Si el nombre cambia de alguna forma El pipeline que configuraremos no los podrá reconocer.)
  3. A continuación tendremos la configuración del pipeline de Jenkins y la configuración del Dockerfile para la correcta implementación.
  4. Para este punto en el pipeline tendrás que reemplazar el link del repositorio con el que estés trabajando,
  • Jenkinsfile
pipeline {
    agent any

    stages {
        stage(‘Clonar Repositorio’) {
            steps {
                // Clonar el repositorio desde GitHub
                git ‘https://github.com/GabooMedina/JenKins.git’ // Cambia la URL si es necesario.
            }
        }

        stage(‘Construir Imagen Docker’) {
            steps {
                // Construir la imagen Docker con los archivos del repositorio clonado
                bat ‘docker build -t proyecto .’ // Comando para Windows
            }
        }

        stage(‘Ejecutar Contenedor’) {
            steps {
                // Ejecutar el contenedor en el puerto 8081
                bat ‘docker run -d -p 8081:80 proyecto’ // Comando para Windows
            }
        }

        stage(‘Ejecutar Pruebas’) {
            steps {
                script {
                    // Ejecutar las pruebas de Node.js
                    bat ”’
                    node js/test.js || exit /b 1
                    ”’
                }
            }
        }
    }

    post {
        always {
            // Limpieza general después de cada ejecución
            bat ‘docker system prune -f’ // Comando para Windows
        }
    }
}
 
  • Dockerfile
    # Usar la imagen base oficial de Nginx
    FROM nginx:alpine

    # Copiar los archivos del proyecto al directorio predeterminado de Nginx
    COPY . /usr/share/nginx/html

    # Exponer el puerto 3000
    EXPOSE 80

Resultados

Una vez creados los archivos, nos dirigimos a nuestro panel de Jenkins , accederemos con la url http://localhost:8080/. Si cambiaste el puerto en la instalación bastara con que remplaces 8080 por el puerto elegido. 

Creamos y configuramos un trabajo y el pipeline para la ejecución. 

Damos permisos y añadimos nuestro link del repositorio.

Ejecutamos nuestra tarea en Construir Ahora. Y podremos observar el dashboard de los resultados con el flujo de trabajo del pipeline. Si quisieras ver el historial de cambios con los commits de tu proyecto podrás acceder a la pestaña de Changes y observaras todos los cambios. 

Video Tutorial

Te presentamos un video tutorial en donde realizamos todas las acciones que contienen la practica completa. El video contiene todos los pasos para la correcta implementación de la practica. 

Link:  Tutorial de Jenkins

¡Gracias por llegar hasta el final del blog! 😊

Espero que este recorrido por el mundo de Jenkins y CI/CD haya sido interesante y enriquecedor. Desde los conceptos básicos hasta la instalación y configuración, hemos explorado cómo esta poderosa herramienta puede transformar el flujo de trabajo en proyectos de desarrollo.

Si tienes alguna duda o quieres profundizar en algún tema, no dudes en compartir tus comentarios. Recuerda que la clave del éxito en CI/CD es la práctica constante y la exploración de nuevas posibilidades.

¡Hasta la próxima, y mucho éxito en tus proyectos de desarrollo! 🚀👩🏻‍💻👨🏻‍💻

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Seguir leyendo….

Javadoc

Javadoc

Introducción a JavadocJavadoc es una herramienta esencial para los desarrolladores de Java que...

CONFLUENCE

CONFLUENCE

Confluence: Confluence es una plataforma de colaboración y gestión de conocimientos desarrollada...

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *