Paramétrage des Builds et Utilisation de Scripts

JenkinsBeginner
Pratiquer maintenant

Introduction

Dans les pipelines CI/CD modernes, la flexibilité et l'automatisation sont essentielles. Le codage en dur des valeurs dans les tâches de construction (build jobs) les rend rigides et difficiles à gérer. Jenkins vous permet de surmonter cela en paramétrant vos constructions et en exécutant des scripts dans le cadre du processus de construction.

Dans ce laboratoire, vous apprendrez à créer une tâche Jenkins flexible. Vous commencerez par ajouter des paramètres pour permettre une saisie utilisateur au moment de la construction. Ensuite, vous apprendrez à exécuter des scripts shell comme étape de construction, à transmettre les paramètres à ces scripts et à configurer des actions post-construction qui réagissent conditionnellement au succès ou à l'échec de la construction. 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 (login) n'est requise.

Créer et Paramétrer un Projet Freestyle

Dans cette étape, vous allez créer un nouveau projet Jenkins Freestyle et lui ajouter des paramètres. Les paramètres rendent vos tâches interactives, vous permettant de fournir des entrées chaque fois qu'une construction (build) est déclenchée.

Commençons par créer la tâche (job).

  1. Ouvrez le navigateur Firefox depuis l'interface de bureau. Le navigateur s'ouvrira automatiquement sur http://localhost:8080, vous n'avez donc pas besoin de saisir manuellement l'URL. Aucune connexion (login) n'est requise.
  2. Sur le tableau de bord Jenkins, cliquez sur New Item (Nouvel Élément) dans le menu de gauche.
  3. Saisissez parameterized-script-job comme nom de l'élément.
  4. Sélectionnez Freestyle project et cliquez sur OK.
Jenkins dashboard New Item button

Vous serez redirigé vers la page de configuration de la tâche. Maintenant, ajoutons des paramètres.

  1. Dans la section General (Général), cochez la case This project is parameterized (Ce projet est paramétré).

    Jenkins job configuration page with parameters
  2. Cliquez sur la liste déroulante Add Parameter (Ajouter un Paramètre) et sélectionnez String Parameter (Paramètre de Chaîne).

    • Name (Nom) : GREETING_NAME
    • Default Value (Valeur par Défaut) : World
    • Description : Enter a name to be greeted. (Entrez un nom à saluer.)
  3. Cliquez à nouveau sur la liste déroulante Add Parameter et sélectionnez Choice Parameter (Paramètre de Choix).

    • Name (Nom) : ENVIRONMENT

    • Choices (Choix) : (Entrez chaque choix sur une nouvelle ligne)

      DEV
      STAGING
      PROD
    • Description : Select the deployment environment. (Sélectionnez l'environnement de déploiement.)

Ces paramètres seront disponibles pour être utilisés dans les étapes de construction ultérieures.

Jenkins job configuration page with parameters

Enfin, faites défiler jusqu'en bas et cliquez sur Save (Enregistrer). Vous serez redirigé vers la page principale de la tâche, où vous verrez maintenant une option Build with Parameters (Construire avec Paramètres) au lieu de "Build Now" (Construire Maintenant).

Build with Parameters

Ajouter une Étape de Build avec un Script Shell

Dans cette étape, vous allez ajouter un script shell au processus de construction (build process) de votre job. C'est une manière courante d'exécuter des tâches telles que la compilation de code, l'exécution de tests ou le déploiement d'applications.

  1. Naviguez vers le tableau de bord parameterized-script-job dans Jenkins.
  2. Cliquez sur Configure dans le menu de gauche.
  3. Faites défiler jusqu'à la section Build Steps (Étapes de construction).
  4. Cliquez sur le menu déroulant Add build step (Ajouter une étape de construction) et sélectionnez Execute shell (Exécuter un shell).
  5. Dans la zone de texte Command (Commande), entrez le script suivant. Ce script créera une structure de répertoire de projet dans l'espace de travail (workspace) 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 ---"
Jenkins job configuration page showing build steps
  1. Cliquez sur Save (Enregistrer) pour appliquer les modifications.

Maintenant, exécutons le job pour voir le script en action.

  1. Sur la page du job, cliquez sur Build with Parameters (Construire avec des paramètres).
  2. Laissez les valeurs des paramètres par défaut et cliquez sur le bouton Build (Construire).
  3. Une nouvelle construction apparaîtra dans l'Build History (Historique des constructions) à gauche. Cliquez sur le numéro de la construction (par exemple, #1).
  4. Cliquez sur Console Output (Sortie Console) pour visualiser les logs.

Vous devriez voir la sortie de votre script shell, y compris la liste des fichiers.

Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/parameterized-script-job
[parameterized-script-job] $ /bin/sh -xe /tmp/jenkins15539247300321029374.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 Aug 22 01:56 .
drwxr-xr-x 3 jenkins jenkins 4096 Aug 22 01:56 ..
-rw-r--r-- 1 jenkins jenkins   12 Aug 22 01:56 version.txt
+ echo --- Build Step Finished ---
--- Build Step Finished ---
Finished: SUCCESS
Jenkins job console output

Passer des Paramètres au Script Shell

Dans cette étape, vous apprendrez comment utiliser les paramètres que vous avez définis à l'étape 1 dans votre script shell. Jenkins expose les paramètres de build sous forme de variables d'environnement, auxquelles vous pouvez accéder dans votre script en utilisant la syntaxe $VARIABLE_NAME.

  1. Retournez à la page Configure (Configurer) de votre parameterized-script-job.
  2. Faites défiler jusqu'à la section Build Steps (Étapes de build) et trouvez la zone de commande Execute shell (Exécuter le shell).
  3. 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 ---"

Notez comment $GREETING_NAME et $ENVIRONMENT sont utilisés directement dans les commandes echo. Lorsque le job s'exécute, Jenkins les remplacera par les valeurs sélectionnées par l'utilisateur.

  1. Cliquez sur Save (Enregistrer).

Maintenant, exécutons le build avec des paramètres personnalisés.

  1. Cliquez sur Build with Parameters (Build avec paramètres).
  2. Changez GREETING_NAME en LabEx.
  3. Sélectionnez STAGING dans la liste déroulante ENVIRONMENT.
  4. Cliquez sur Build (Build).
  5. Vérifiez la Console Output (Sortie de la console) pour le nouveau build.

La sortie devrait maintenant refléter les valeurs personnalisées que vous avez fournies.

Sortie de la console de build Jenkins montrant l'exécution du script paramétré
--- 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 Étapes Conditionnelles

Dans cette étape, vous allez simuler un échec de construction et utiliser une Action Post-construction (Post-build Action) pour exécuter un script de nettoyage ou de notification uniquement lorsque la construction échoue. Ceci est crucial pour créer des pipelines résilients.

Installer le plugin Post-build Task

Avant de pouvoir utiliser l'action de tâche post-construction, nous devons installer le plugin requis.

  1. Dans Jenkins, cliquez sur l'icône d'engrenage dans le coin supérieur droit pour accéder au panneau d'administration de Jenkins, puis cliquez sur Plugins.
  2. Cliquez sur l'onglet Plugins disponibles (Available plugins).
  3. Cliquez sur Vérifier maintenant (Check now) pour rafraîchir la liste des plugins.
  4. Dans la boîte de recherche, recherchez Post build task.
  5. Cochez la case à côté du plugin et cliquez sur Installer sans redémarrer (Install without restart).
  6. Attendez la fin de l'installation.
Jenkins available plugins page searching for Post build task

Modifier le script pour simuler l'échec

Maintenant, modifions le script pour qu'il échoue sous une condition spécifique.

  1. Allez à la page Configurer (Configure) pour votre parameterized-script-job.
  2. Dans la boîte de commande Exécuter le shell (Execute shell), remplacez le script par ce qui suit :
echo "Deploying to the $ENVIRONMENT environment."

if [ "$ENVIRONMENT" = "PROD" ]; then
  echo "Error: Production deployment is not allowed!"
  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 sortie de 1. Dans le scripting shell, tout code de sortie non nul signale un échec.

Maintenant, ajoutons une action post-construction qui se déclenche en cas d'échec.

Ajouter une action post-construction

  1. Faites défiler jusqu'à la section Actions post-construction (Post-build Actions).
  2. Cliquez sur Ajouter une action post-construction (Add post-build action) et sélectionnez Tâche post-construction (Post-build task).
  3. Dans le champ Texte du journal (Log text), entrez Error:. Cela indique au plugin de rechercher ce texte spécifique dans le journal de construction.
  4. Dans le champ Script, entrez la commande suivante :
echo "FAILURE DETECTED! Sending notification..."
Post-build task configuration with failure detection
  1. Cliquez sur Enregistrer (Save).

Tester la condition d'échec

Testons maintenant la condition d'échec.

  1. Cliquez sur Construire avec des paramètres (Build with Parameters).
  2. Sélectionnez PROD pour l'ENVIRONMENT et cliquez sur Construire (Build).
  3. La construction échouera, indiqué par une icône rouge dans l'Historique des constructions (Build History).
  4. Vérifiez la Sortie Console (Console Output). Vous verrez le message d'erreur de votre script principal et le message de votre tâche post-construction.
Console output showing build failure and post-build task
Deploying to the PROD environment.
+ [ PROD = PROD ]
+ echo Error: Production deployment is not allowed!
Error: Production deployment is not allowed!
+ exit 1
Build step 'Execute shell' marked build as failure
Performing Post build task...
Match found for :Error: : True
Logical operation result is TRUE
Running script  : echo "FAILURE DETECTED! Sending notification..."
[parameterized-script-job] $ /bin/sh -xe /tmp/jenkins14011006354379294736.sh
+ echo FAILURE DETECTED! Sending notification...
FAILURE DETECTED! Sending notification...
POST BUILD TASK : SUCCESS
END OF POST BUILD TASK : 0
Finished: FAILURE

Si vous exécutez à nouveau la construction avec DEV ou STAGING, elle réussira et la tâche post-construction ne sera pas exécuté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 les paramètres String et Choice.
  • Exécuter des scripts shell dans le cadre d'un processus de build.
  • Accéder et utiliser les paramètres de build comme variables d'environnement dans vos scripts.
  • Implémenter une logique conditionnelle dans un script pour contrôler le résultat du build.
  • Configurer des actions post-build qui se déclenchent en fonction du contenu du log du build, vous permettant de gérer les échecs de build avec élégance.

Ces compétences sont essentielles pour construire des pipelines CI/CD sophistiqués qui peuvent s'adapter à différentes entrées et 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.