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
- 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.
- Bloc
pipeline
pipeline
El bloc pipeline
és el contenidor principal de la pipeline declarativa. Tota la definició de la pipeline es troba dins d'aquest bloc.
- Bloc
agent
agent
El bloc agent
defineix on s'executarà la pipeline. Pot ser un node específic, qualsevol node disponible, o un contenidor Docker.
- Bloc
stages
stages
El bloc stages
conté una o més etapes (stage
). Cada etapa representa una part del procés de construcció, prova o desplegament.
- Bloc
steps
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
iDeploy
. - Bloc
steps
: Cada etapa conté un blocsteps
que defineix les accions a realitzar. En aquest exemple, només es mostren missatges de consola ambecho
.
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 imatgemaven:3-alpine
. - Bloc
steps
: Executa la comandamvn 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 etapesTest
iDeploy
només s'executaran si la branca ésmaster
.
Exercicis Pràctics
Exercici 1: Crear una Pipeline amb Tres Etapes
Creeu una pipeline que tingui les següents etapes:
Compile
: Compila el codi.Unit Test
: Executa les proves unitàries.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.
Jenkins: De Principiant a Avançat
Mòdul 1: Introducció a Jenkins
Mòdul 2: Conceptes Bàsics de Jenkins
- Visió General del Tauler de Jenkins
- Creant i Executant Feines
- Entenent les Pipelines de Jenkins
- Utilitzant Plugins de Jenkins
Mòdul 3: Pipelines de Jenkins
- Pipeline com a Codi
- Pipelines Declaratives vs Scriptades
- Creant una Pipeline Simple
- Sintaxi de Pipeline
Mòdul 4: Pipelines Avançades de Jenkins
- Etapes i Passos de Pipeline
- Execució Paral·lela en Pipelines
- Utilitzant Variables d'Entorn
- Millors Pràctiques de Pipeline
Mòdul 5: Administració de Jenkins
- Gestionant Nodes de Jenkins
- Configurant la Seguretat
- Còpia de Seguretat i Restauració de Jenkins
- Monitorant Jenkins
Mòdul 6: Integrant Jenkins
- Integració amb Sistemes de Control de Versions
- Integració amb Eines de Compilació
- Integració amb Eines de Prova
- Integració amb Eines de Desplegament
Mòdul 7: Jenkins per a la Integració i el Lliurament Continu (CI/CD)
- Entenent CI/CD
- Configurant una Pipeline de CI
- Configurant una Pipeline de CD
- Automatitzant Desplegaments
Mòdul 8: Temes Avançats de Jenkins
- Utilitzant Jenkins amb Docker
- Jenkins i Kubernetes
- Jenkins com a Codi amb Jenkinsfile
- Escalant Jenkins