Introducció

En aquest tema, aprendrem com utilitzar Jenkins amb Docker per crear entorns d'integració contínua (CI) i desplegament continu (CD) més eficients i escalables. Docker permet encapsular aplicacions i les seves dependències en contenidors lleugers, assegurant que el codi s'executi de manera consistent en qualsevol entorn.

Objectius

  • Entendre els conceptes bàsics de Docker.
  • Aprendre a instal·lar i configurar Jenkins dins d'un contenidor Docker.
  • Crear pipelines de Jenkins que utilitzin Docker per a la construcció i desplegament d'aplicacions.
  • Explorar exemples pràctics d'integració de Jenkins amb Docker.

Conceptes Bàsics de Docker

Què és Docker?

Docker és una plataforma de codi obert que automatitza la distribució d'aplicacions dins de contenidors lleugers. Els contenidors permeten empaquetar una aplicació amb totes les seves dependències, assegurant que s'executi de manera consistent en qualsevol entorn.

Components Clau de Docker

  • Imatges Docker: Són plantilles de només lectura que defineixen el que conté un contenidor.
  • Contenidors Docker: Són instàncies en execució d'imatges Docker.
  • Dockerfile: És un fitxer de text que conté les instruccions per crear una imatge Docker.
  • Docker Hub: És un registre públic on es poden trobar i compartir imatges Docker.

Instal·lant Jenkins amb Docker

Requisits Prèvis

  • Docker instal·lat en el teu sistema. Pots seguir les instruccions oficials de Docker per a la instal·lació: Instal·lant Docker.

Passos per Instal·lar Jenkins en un Contenidor Docker

  1. Descarregar la Imatge de Jenkins:

    docker pull jenkins/jenkins:lts
    
  2. Executar un Contenidor de Jenkins:

    docker run -d -p 8080:8080 -p 50000:50000 --name jenkins jenkins/jenkins:lts
    
  3. Accedir a la Interfície Web de Jenkins:

    • Obre el navegador web i ves a http://localhost:8080.
    • Segueix les instruccions per completar la configuració inicial de Jenkins.

Exemple de Dockerfile per Jenkins

Si vols personalitzar la teva instal·lació de Jenkins, pots crear un Dockerfile:

FROM jenkins/jenkins:lts

# Instal·lar plugins addicionals
RUN jenkins-plugin-cli --plugins "blueocean:1.24.7 docker-workflow:1.26"

# Configurar Jenkins
COPY --chown=jenkins:jenkins custom-config.xml /var/jenkins_home/custom-config.xml

Per construir i executar aquesta imatge personalitzada:

docker build -t my-jenkins .
docker run -d -p 8080:8080 -p 50000:50000 --name my-jenkins my-jenkins

Creant Pipelines de Jenkins amb Docker

Exemple de Pipeline amb Docker

A continuació, es mostra un exemple de pipeline de Jenkins que utilitza Docker per construir i executar una aplicació:

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                script {
                    docker.image('maven:3.6.3-jdk-8').inside {
                        sh 'mvn clean install'
                    }
                }
            }
        }

        stage('Test') {
            steps {
                script {
                    docker.image('openjdk:8').inside {
                        sh 'java -jar target/my-app.jar'
                    }
                }
            }
        }
    }
}

Explicació del Pipeline

  • agent any: Indica que el pipeline pot executar-se en qualsevol agent disponible.
  • stage('Build'): Utilitza una imatge Docker de Maven per construir l'aplicació.
  • stage('Test'): Utilitza una imatge Docker de OpenJDK per executar les proves.

Exercici Pràctic

Objectiu

Crear un pipeline de Jenkins que utilitzi Docker per construir i executar una aplicació simple.

Passos

  1. Crear un Repositori Git amb un Projecte Maven:

    • Crea un projecte Maven simple amb un fitxer pom.xml i una classe Java principal.
  2. Configurar Jenkins per Utilitzar el Repositori Git:

    • Crea una nova feina de pipeline a Jenkins.
    • Configura el repositori Git en la feina.
  3. Definir el Pipeline a Jenkinsfile:

    • Afegeix el següent contingut al fitxer Jenkinsfile en el teu repositori:
    pipeline {
        agent any
    
        stages {
            stage('Build') {
                steps {
                    script {
                        docker.image('maven:3.6.3-jdk-8').inside {
                            sh 'mvn clean install'
                        }
                    }
                }
            }
    
            stage('Test') {
                steps {
                    script {
                        docker.image('openjdk:8').inside {
                            sh 'java -jar target/my-app.jar'
                        }
                    }
                }
            }
        }
    }
    
  4. Executar la Feina de Jenkins:

    • Executa la feina i verifica que el pipeline es completi correctament.

Solució

El pipeline hauria de construir l'aplicació utilitzant Maven i després executar-la utilitzant OpenJDK, tot dins de contenidors Docker.

Conclusió

En aquest tema, hem après com utilitzar Docker amb Jenkins per crear entorns d'integració contínua més eficients i escalables. Hem vist com instal·lar Jenkins dins d'un contenidor Docker, com crear pipelines que utilitzin Docker per a la construcció i execució d'aplicacions, i hem explorat un exemple pràctic per reforçar els conceptes apresos.

Resum

  • Docker permet encapsular aplicacions i les seves dependències en contenidors lleugers.
  • Hem après a instal·lar i configurar Jenkins dins d'un contenidor Docker.
  • Hem creat pipelines de Jenkins que utilitzen Docker per a la construcció i execució d'aplicacions.
  • Hem realitzat un exercici pràctic per aplicar els conceptes apresos.

Amb aquests coneixements, estàs preparat per integrar Docker en els teus pipelines de Jenkins i aprofitar els avantatges dels contenidors per a la teva infraestructura CI/CD.

© Copyright 2024. Tots els drets reservats