En aquest tema, explorarem la sintaxi de les pipelines de Jenkins. Les pipelines són una manera poderosa i flexible d'automatitzar la construcció, prova i desplegament del vostre codi. Jenkins ofereix dues maneres principals de definir pipelines: pipelines declaratives i pipelines scriptades. Ens centrarem en la sintaxi de les pipelines declaratives, ja que són més fàcils de llegir i mantenir.

Conceptes Clau

  1. Pipeline Declarativa

La pipeline declarativa utilitza una sintaxi específica per definir les etapes i passos de la pipeline. Aquesta sintaxi és més estructurada i fàcil de llegir.

  1. Bloc pipeline

El bloc pipeline és el contenidor principal de la pipeline declarativa. Tota la definició de la pipeline es troba dins d'aquest bloc.

  1. Bloc agent

El bloc agent defineix on s'executarà la pipeline. Pot ser un node específic, qualsevol node disponible, o un contenidor Docker.

  1. Bloc stages

El bloc stages conté una o més etapes (stage). Cada etapa representa una part del procés de construcció, prova o desplegament.

  1. Bloc steps

El bloc steps dins d'una etapa defineix les accions específiques que es duran a terme.

Estructura Bàsica d'una Pipeline Declarativa

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
            }
        }
    }
}

Explicació del Codi

  • Bloc pipeline: Conté tota la definició de la pipeline.
  • Bloc agent: Defineix que la pipeline s'executarà en qualsevol node disponible (any).
  • Bloc stages: Conté tres etapes: Build, Test i Deploy.
  • Bloc steps: Cada etapa conté un bloc steps que defineix les accions a realitzar. En aquest exemple, només es mostren missatges de consola amb echo.

Exemples Pràctics

Exemple 1: Pipeline amb un Agent Docker

pipeline {
    agent {
        docker {
            image 'maven:3-alpine'
            args '-v /root/.m2:/root/.m2'
        }
    }
    stages {
        stage('Build') {
            steps {
                sh 'mvn clean install'
            }
        }
    }
}

Explicació del Codi

  • Bloc agent: Defineix que la pipeline s'executarà dins d'un contenidor Docker amb la imatge maven:3-alpine.
  • Bloc steps: Executa la comanda mvn clean install dins del contenidor Docker.

Exemple 2: Pipeline amb Condicions

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
        stage('Test') {
            when {
                branch 'master'
            }
            steps {
                echo 'Testing on master branch...'
            }
        }
        stage('Deploy') {
            when {
                branch 'master'
            }
            steps {
                echo 'Deploying on master branch...'
            }
        }
    }
}

Explicació del Codi

  • Bloc when: Defineix condicions per executar una etapa. En aquest exemple, les etapes Test i Deploy només s'executaran si la branca és master.

Exercicis Pràctics

Exercici 1: Crear una Pipeline amb Tres Etapes

Creeu una pipeline que tingui les següents etapes:

  1. Compile: Compila el codi.
  2. Unit Test: Executa les proves unitàries.
  3. Package: Empaqueta l'aplicació.

Solució

pipeline {
    agent any
    stages {
        stage('Compile') {
            steps {
                echo 'Compiling...'
            }
        }
        stage('Unit Test') {
            steps {
                echo 'Running unit tests...'
            }
        }
        stage('Package') {
            steps {
                echo 'Packaging...'
            }
        }
    }
}

Exercici 2: Utilitzar un Agent Docker

Modifiqueu la pipeline anterior per executar-se dins d'un contenidor Docker amb la imatge openjdk:8-jdk-alpine.

Solució

pipeline {
    agent {
        docker {
            image 'openjdk:8-jdk-alpine'
        }
    }
    stages {
        stage('Compile') {
            steps {
                echo 'Compiling...'
            }
        }
        stage('Unit Test') {
            steps {
                echo 'Running unit tests...'
            }
        }
        stage('Package') {
            steps {
                echo 'Packaging...'
            }
        }
    }
}

Resum

En aquest tema, hem après la sintaxi bàsica de les pipelines declaratives de Jenkins. Hem vist com estructurar una pipeline amb els blocs pipeline, agent, stages i steps. També hem explorat exemples pràctics i exercicis per reforçar els conceptes apresos. Amb aquesta base, estem preparats per aprofundir en les pipelines avançades de Jenkins en el següent mòdul.

© Copyright 2024. Tots els drets reservats