Introduction
Dans les pipelines CI/CD modernes, la flexibilité et l'automatisation sont essentielles. Le codage en dur (hardcoding) de valeurs dans les jobs de build les rend rigides et difficiles à gérer. Jenkins vous permet de surmonter cela en paramétrant vos builds et en exécutant des scripts dans le cadre du processus de build.
Dans ce laboratoire, vous apprendrez à créer un job Jenkins flexible. Vous commencerez par ajouter des paramètres pour permettre une saisie utilisateur au moment du build. Ensuite, vous apprendrez à exécuter des scripts shell en tant qu'étape de build, à transmettre ces paramètres aux scripts et à configurer des actions post-build qui réagissent de manière conditionnelle au succès ou à l'échec du build. Ce sont des compétences fondamentales pour créer des flux de travail d'automatisation robustes et dynamiques dans Jenkins.
Une instance Jenkins est déjà en cours d'exécution dans votre environnement. Vous pouvez accéder à l'interface web de Jenkins en ouvrant le navigateur Firefox sur le bureau. Le navigateur s'ouvrira automatiquement sur http://localhost:8080, vous n'avez donc pas besoin de saisir l'URL manuellement. Aucune connexion n'est requise.
Créer et paramétrer un projet Freestyle
Dans cette étape, vous allez créer un nouveau projet Jenkins Freestyle et y ajouter des paramètres. Les paramètres rendent vos jobs interactifs, vous permettant de fournir des entrées à chaque fois qu'un build est déclenché.
Tout d'abord, créons le job.
- Ouvrez le navigateur Firefox depuis l'interface du bureau. Le navigateur s'ouvrira automatiquement sur
http://localhost:8080. Aucune connexion n'est requise. - Sur le tableau de bord Jenkins, cliquez sur New Item (Nouvel élément) dans le menu de gauche.
- Saisissez
parameterized-script-jobcomme nom d'élément. - Sélectionnez Freestyle project et cliquez sur OK.

Vous serez redirigé vers la page de configuration du job. Ajoutons maintenant des paramètres.
Dans la section General, cochez la case This project is parameterized (Ce projet est paramétré).

Cliquez sur le menu déroulant Add Parameter et sélectionnez String Parameter.
- Name:
GREETING_NAME - Default Value:
World - Description:
Enter a name to be greeted.
- Name:
Cliquez à nouveau sur le menu déroulant Add Parameter et sélectionnez Choice Parameter.
Name:
ENVIRONMENTChoices: (Saisissez chaque choix sur une nouvelle ligne)
DEV STAGING PRODDescription:
Select the deployment environment.
Ces paramètres seront disponibles pour être utilisés dans les étapes de build ultérieures.

Enfin, faites défiler vers le bas et cliquez sur Save. Vous serez redirigé vers la page principale du job, où vous verrez désormais une option Build with Parameters au lieu de "Build Now".

Ajouter une étape de build de script shell
Dans cette étape, vous allez ajouter un script shell au processus de build de votre job. C'est un moyen courant d'effectuer des tâches telles que la compilation de code, l'exécution de tests ou le déploiement d'applications.
- Accédez au tableau de bord
parameterized-script-jobdans Jenkins. - Cliquez sur Configure dans le menu de gauche.
- Faites défiler jusqu'à la section Build Steps.
- Cliquez sur le menu déroulant Add build step et sélectionnez Execute shell.
- Dans la zone de texte Command, saisissez le script suivant. Ce script créera une structure de répertoire de projet dans l'espace de travail Jenkins et listera son contenu.
echo "--- Starting Build Step ---"
echo "Current directory:"
pwd
echo "Creating project directory structure:"
mkdir -p my-app
echo "Version 1.0" > my-app/version.txt
echo "Listing files in the project directory:"
ls -la my-app
echo "--- Build Step Finished ---"

- Cliquez sur Save pour appliquer les modifications.
Maintenant, exécutons le job pour voir le script en action.
- Sur la page du job, cliquez sur Build with Parameters.
- Laissez les valeurs de paramètres par défaut et cliquez sur le bouton Build.
- Un nouveau build apparaîtra dans le Build History sur la gauche. Cliquez sur le numéro du build (par exemple,
#1). - Cliquez sur Console Output pour voir les journaux.
Vous devriez voir la sortie de votre script shell, y compris la liste des fichiers.
Started by user unknown or anonymous
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/parameterized-script-job
[parameterized-script-job] $ /bin/sh -xe /tmp/jenkins....sh
+ echo --- Starting Build Step ---
--- Starting Build Step ---
+ echo Current directory:
Current directory:
+ pwd
/var/jenkins_home/workspace/parameterized-script-job
+ echo Creating project directory structure:
Creating project directory structure:
+ mkdir -p my-app
+ echo Version 1.0
+ echo Listing files in the project directory:
Listing files in the project directory:
+ ls -la my-app
total 12
drwxr-xr-x 2 jenkins jenkins 4096 ... .
drwxr-xr-x 3 jenkins jenkins 4096 ... ..
-rw-r--r-- 1 jenkins jenkins 12 ... version.txt
+ echo --- Build Step Finished ---
--- Build Step Finished ---
Finished: SUCCESS

Transmettre des paramètres au script shell
Dans cette étape, vous apprendrez à utiliser les paramètres que vous avez définis à l'étape 1 dans votre script shell. Jenkins expose les paramètres de build en tant que variables d'environnement, auxquelles vous pouvez accéder dans votre script en utilisant la syntaxe $VARIABLE_NAME.
- Revenez à la page Configure de votre
parameterized-script-job. - Faites défiler jusqu'à la section Build Steps et trouvez la zone de commande Execute shell.
- Remplacez le script existant par le suivant :
echo "--- Starting Parameterized Build Step ---"
echo "Hello, $GREETING_NAME!"
echo "Deploying to the $ENVIRONMENT environment."
## Create project structure if not exists and read the version from the file
mkdir -p my-app
echo "Version 1.0" > my-app/version.txt
APP_VERSION=$(cat my-app/version.txt)
echo "Application version is: $APP_VERSION"
echo "--- Parameterized Build Step Finished ---"
Remarquez comment $GREETING_NAME et $ENVIRONMENT sont utilisés directement dans les commandes echo. Lorsque le job s'exécute, Jenkins les remplace par les valeurs sélectionnées par l'utilisateur.
- Cliquez sur Save.
Maintenant, exécutons le build avec des paramètres personnalisés.
- Cliquez sur Build with Parameters.
- Remplacez
GREETING_NAMEparLabEx. - Sélectionnez
STAGINGdans le menu déroulantENVIRONMENT. - Cliquez sur Build.
- Vérifiez la Console Output pour le nouveau build.
La sortie doit maintenant refléter les valeurs personnalisées que vous avez fournies.

--- Starting Parameterized Build Step ---
+ echo Hello, LabEx!
Hello, LabEx!
+ echo Deploying to the STAGING environment.
Deploying to the STAGING environment.
+ mkdir -p my-app
+ echo Version 1.0
+ cat my-app/version.txt
+ APP_VERSION=Version 1.0
+ echo Application version is: Version 1.0
Application version is: Version 1.0
+ echo --- Parameterized Build Step Finished ---
--- Parameterized Build Step Finished ---
Gérer les échecs de build avec des conditions shell
Dans cette étape, vous allez simuler un échec de build directement dans le script shell. C'est un moyen fiable de faire en sorte qu'un job Freestyle s'arrête lorsqu'une règle de déploiement est violée.
Modifier le script pour simuler un échec
Modifions maintenant le script pour qu'il échoue sous une condition spécifique.
- Accédez à la page Configure de votre
parameterized-script-job. - Dans la zone de commande Execute shell, remplacez le script par le suivant :
echo "Deploying to the $ENVIRONMENT environment."
if [ "$ENVIRONMENT" = "PROD" ]; then
echo "Error: Production deployment is not allowed!"
echo "Failure handled by shell condition."
exit 1
fi
echo "Deployment to $ENVIRONMENT was successful."
Ce script vérifie le paramètre ENVIRONMENT. S'il est défini sur PROD, il affiche une erreur et se termine avec un code de statut 1. Dans le scripting shell, tout code de sortie non nul signale un échec à Jenkins.
- Cliquez sur Save.
Tester la condition d'échec
Testons maintenant la condition d'échec.
- Cliquez sur Build with Parameters.
- Sélectionnez
PRODpourENVIRONMENTet cliquez sur Build. - Le build échouera, ce qui est indiqué par une icône rouge dans l'historique des builds.
- Vérifiez la Console Output. Vous verrez le message d'erreur de votre script et le statut final du build Jenkins.

Deploying to the PROD environment.
+ [ PROD = PROD ]
+ echo Error: Production deployment is not allowed!
Error: Production deployment is not allowed!
+ echo Failure handled by shell condition.
Failure handled by shell condition.
+ exit 1
Build step 'Execute shell' marked build as failure
Finished: FAILURE
Si vous exécutez à nouveau le build avec DEV ou STAGING, il réussira car la condition d'échec n'est pas déclenchée.
Résumé
Félicitations. Vous avez créé avec succès un job Jenkins flexible et robuste.
Dans ce laboratoire, vous avez appris à :
- Créer un job Jenkins paramétré en utilisant des paramètres de type String et Choice.
- Exécuter des scripts shell dans le cadre d'un processus de build.
- Accéder aux paramètres de build et les utiliser en tant que variables d'environnement dans vos scripts.
- Implémenter une logique conditionnelle dans un script pour contrôler le résultat du build.
- Utiliser des conditions shell et des codes de sortie pour contrôler si un build réussit ou échoue.
Ces compétences sont essentielles pour construire des pipelines CI/CD sophistiqués capables de s'adapter à différentes entrées et de gérer les erreurs intelligemment. Vous pouvez maintenant appliquer ces concepts pour automatiser vos propres flux de travail de développement et de déploiement.

