• ¡Obtenga la seguridad de la aplicación de la manera correcta! Detectar, proteger, monitorear, acelerar y más ...
  • Una guía paso a paso para crear la canalización de Jenkins

    Why Jenkins Pipeline?

    Continuous Delivery (CD) es una parte esencial del ciclo de vida de DevOps.

    Se asegura de que los desarrolladores de software / aplicaciones que están creando estén siempre listos para la producción. Para que esto suceda, cada vez que el código se actualiza, debe compilarse, probarse e implementarse continuamente. Aquí es donde Jenkins Pipeline entra en escena.

    In DevOps, La integración continua y la entrega continua (CI / CD) se logra a través de Jenkins Pipeline. El uso de Jenkins Pipeline para CD ayuda a entregar el software con lanzamientos más rápidos y frecuentes. Esto ayuda a incorporar los comentarios en cada próxima versión.

    What is Jenkins Pipeline?

    Jenkins Pipeline es una combinación de trabajos para entregar software continuamente usando Jenkins.

    Supongo que sabes lo que es Jenkins. Si no, mira esto Curso de Udemy para dominar Jenkins.

    Una canalización de Jenkins consta de varios estados o etapas, y se ejecutan en una secuencia, una tras otra. JenkinsFile es un archivo de texto simple que se usa para crear una canalización como código en Jenkins. Contiene código en Groovy Domain Specific Language (DSL), que es fácil de escribir y legible por humanos.

    Puede ejecutar JenkinsFile por separado o también puede ejecutar el código de canalización desde la interfaz de usuario web de Jenkins. Hay dos formas de crear una canalización con Jenkins.

    • Declarativo: una nueva forma de crear Jenkins Pipeline. Aquí escribe un código maravilloso que contiene bloques de "canalización", que se registra en un SCM (Gestión de código fuente)
    • Secuencia de comandos: forma de escribir código maravilloso donde el código se define dentro de bloques de "nodo".

    Antes de entrar en la demostración, si no ha instalado Jenkins, instálelo primero. Asegúrese de tener Jenkins en funcionamiento en su sistema.

    Create a Jenkins Pipeline

    Así es como se ve un flujo de tubería de Jenkins, que consta de múltiples etapas entre los desarrolladores que crean un software (codificación) y el software entregado en producción.

    Oleoducto Jenkins

    Creemos una canalización declarativa.

    En el panel de Jenkins, haga clic en Nuevo elemento. Luego ingrese un nombre de elemento, por ejemplo, 'Primera canalización' y seleccione el proyecto 'Canalización'. Luego haga clic en Aceptar.

    Nuevo artículo: tubería Jenkins

    Haga clic en la pestaña Pipeline como se muestra en la imagen a continuación, y coloque su código JenkinsFile (Groovy Code) aquí.

    Jenkins Código de archivo

    pipeline {
             agent any
             stages {
                     stage('Build') {
                     steps {
                         echo 'Hi, GeekFlare. Starting to build the App.'
                     }
                     }
                     stage('Test') {
                     steps {
                        input('Do you want to proceed?')
                     }
                     }
                     stage('Deploy') {
                     parallel { 
                                stage('Deploy start ') {
                               steps {
                                    echo "Start the deploy .."
                               } 
                               }
                                stage('Deploying now') {
                                agent {
                                        docker {
                                                reuseNode true
                                                image ‘nginx’
                                               }
                                        }
                                
                                  steps {
                                    echo "Docker Created"
                                  }
                               }
                               }
                               }
                     stage('Prod') {
                         steps {
                                    echo "App is Prod Ready"
                                  }
                     
                  }
    }
    }

    Déjame explicarte los bloques anteriores.

    • La industrial El bloque consta de todas las instrucciones para crear, probar y entregar software. Es el componente clave de Jenkins Pipeline.
    • An agente se asigna para ejecutar la canalización en un nodo y asignar un espacio de trabajo para la canalización.
    • A escenario es un bloque que tiene pasos para construir, probar e implementar la aplicación. Las etapas se utilizan para visualizar los procesos de Jenkins Pipeline.
    • A paso es una única tarea que se debe realizar, por ejemplo, crear un directorio, ejecutar una imagen de la ventana acoplable, eliminar un archivo, etc.

    El código Groovy anterior, lo estoy usando para JenkinsFile. Cualquier agente disponible será asignado a la canalización. Luego estoy definiendo la etapa de construcción y realizando un simple paso de eco. Luego definí la etapa de Prueba donde el paso pregunta si desea continuar o no. Después de eso, he creado una etapa de implementación, que tiene dos etapas más ejecutándose en paralelo. La etapa de inicio de implementación tiene un paso con comando echo, y la implementación ahora tiene un paso que extrae una imagen de la ventana acoplable de Nginx en el nodo. Finalmente, hay una etapa Prod con un simple paso de eco.

    La canalización explicada anteriormente tiene etapas que tienen pasos simples para que comprenda cómo funciona. Una vez que aprenda a crear una canalización, puede agregar más complejidad y crear canalizaciones complejas también.

    Una vez que tenga el código en la pestaña Canalización, haga clic en Aplicar y Guardar. Finalmente, haga clic en Construir ahora para comenzar a construir la tubería Jenkins que acaba de crear.

    Construir ahora

    Así es como se verá la interfaz de usuario cuando se ejecute la canalización. Si ha seguido todos los pasos correctamente, su compilación será exitosa y mostrará un color azul para la compilación (# 27). Si hay errores en la construcción, le dará color rojo (# 27).

    Jenkins Build 27

    Ahora haga clic en la compilación n. ° 27 y luego haga clic en Salida de consola para verificar qué sucedió exactamente en el back-end cuando se ejecutó.

    Construcción de Jenkins

    Así es como se verá la salida que termina con un mensaje SUCCESS.

    Success Console Output
    
    Started by user geekflare
    Running in Durability level: MAX_SURVIVABILITY
    [Pipeline] Start of Pipeline
    [Pipeline] node
    Running on Jenkins in /var/lib/jenkins/workspace/First Pipeline
    [Pipeline] {
    [Pipeline] stage
    [Pipeline] { (Build)
    [Pipeline] echo
    Hi, GeekFlare. Starting to build the App.
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (Test)
    [Pipeline] input
    Do you want to proceed?
    Proceed or Abort
    Approved by geekflare
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (Deploy)
    [Pipeline] parallel
    [Pipeline] { (Branch: Deploy start )
    [Pipeline] { (Branch: Deploying now)
    [Pipeline] stage
    [Pipeline] { (Deploy start )
    [Pipeline] stage
    [Pipeline] { (Deploying now)
    [Pipeline] getContext
    [Pipeline] isUnix
    [Pipeline] sh
    [Pipeline] echo
    Start the deploy ..
    [Pipeline] }
    + docker inspect -f . nginx
    [Pipeline] // stage
    [Pipeline] }
    
    Error: No such object: nginx
    [Pipeline] isUnix
    [Pipeline] sh
    + docker pull nginx
    Using default tag: latest
    latest: Pulling from library/nginx
    8d691f585fa8: Pulling fs layer
    5b07f4e08ad0: Pulling fs layer
    abc291867bca: Pulling fs layer
    abc291867bca: Verifying Checksum
    abc291867bca: Download complete
    5b07f4e08ad0: Verifying Checksum
    5b07f4e08ad0: Download complete
    8d691f585fa8: Verifying Checksum
    8d691f585fa8: Download complete
    8d691f585fa8: Pull complete
    5b07f4e08ad0: Pull complete
    abc291867bca: Pull complete
    Digest: sha256:922c815aa4df050d4df476e92daed4231f466acc8ee90e0e774951b0fd7195a4
    Status: Downloaded newer image for nginx:latest
    [Pipeline] withDockerContainer
    Jenkins does not seem to be running inside a container
    $ docker run -t -d -u 125:131 -w "/var/lib/jenkins/workspace/First Pipeline" -v "/var/lib/jenkins/workspace/First Pipeline:/var/lib/jenkins/workspace/First Pipeline:rw,z" -v "/var/lib/jenkins/workspace/First [email protected]:/var/lib/jenkins/workspace/First [email protected]:rw,z" -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** nginx cat
    $ docker top 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943 -eo pid,comm
    [Pipeline] {
    [Pipeline] echo
    Docker Created
    [Pipeline] }
    $ docker stop --time=1 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
    $ docker rm -f 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
    [Pipeline] // withDockerContainer
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] }
    [Pipeline] // parallel
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (Prod)
    [Pipeline] echo
    App is Prod Ready
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] }
    [Pipeline] // node
    [Pipeline] End of Pipeline
    Finished: SUCCESS

    El Jenkins Pipeline anterior ha creado una imagen acoplable de Nginx. Puede verificarlo ejecutando el siguiente comando. Puede ver que la imagen de la ventana acoplable de Nginx también aparece en la lista.

    [email protected]:~$ docker image ls
    REPOSITORY TAG IMAGE ID CREATED SIZE
    nginx latest 540a289bab6c 2 weeks ago 126MB
    httpd latest 7d85cc3b2d80 2 months ago 154MB
    redis latest f7302e4ab3a8 2 months ago 98.2MB
    geekflare_mongodb latest 095d17727ca0 3 months ago 325MB

    En resumen

    Espero que esto te dé una idea de Oleoducto Jenkins beneficios y cómo puede crear uno. Lo anterior es una demostración simple y la mejor manera de aprender es intentando construir tuberías complejas.