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
pipelineEl bloc pipeline és el contenidor principal de la pipeline declarativa. Tota la definició de la pipeline es troba dins d'aquest bloc.
- Bloc
agent
agentEl bloc agent defineix on s'executarà la pipeline. Pot ser un node específic, qualsevol node disponible, o un contenidor Docker.
- Bloc
stages
stagesEl bloc stages conté una o més etapes (stage). Cada etapa representa una part del procés de construcció, prova o desplegament.
- Bloc
steps
stepsEl 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,TestiDeploy. - Bloc
steps: Cada etapa conté un blocstepsque 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 installdins 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 etapesTestiDeploynomé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
