Présentation
Jenkins est une solution open source utilisée pour automatiser différentes parties du cycle de vie du développement logiciel (SDLC). Les variables d'environnement fournissent un outil précieux pour cela, permettant aux développeurs d'invoquer une valeur plusieurs fois sans avoir besoin de la définir avant chaque utilisation.
Dans ce didacticiel, nous aborderons différentes manières de répertorier et de définir les variables d'environnement Jenkins.
Prérequis
- Une copie de Jenkins installée et prête à l'emploi (découvrez comment installer Jenkins sur Ubuntu 18.04, Debian 10, CentOS 8 ou Windows 10).
- Accès à un navigateur Web.
Que sont les variables d'environnement dans Jenkins ?
Les variables d'environnement sont des paires clé-valeur globales auxquelles Jenkins peut accéder et injecter dans un projet. Utilisez les variables d'environnement Jenkins pour éviter d'avoir à coder les mêmes valeurs pour chaque projet.
Les autres avantages de l'utilisation des variables d'environnement Jenkins incluent une sécurité améliorée. Jenkins peut utiliser des informations d'identification de sécurité comme variables, en gardant les données sensibles ou générées par l'utilisateur hors du code du projet.
Les types de variables couramment utilisés dans Jenkins incluent env
(variables d'environnement), currentBuild
, params
(paramètres) et docker
(accès aux fonctions Docker). Jenkins enregistre toutes les variables d'environnement actuelles sous forme de liste.
Comment voir les variables d'environnement dans Jenkins
Il existe deux façons de lister toutes les variables d'environnement Jenkins :
- Accéder à la liste via un navigateur Web.
- Utiliser les commandes du shell Jenkins pour l'imprimer.
Via env-vars.html
Pour afficher une liste des variables d'environnement Jenkins dans un navigateur Web, accédez à l'adresse suivante :
[Jenkins URL]/env-vars.html
L'URL Jenkins est une combinaison du nom d'hôte de votre système et du port utilisé par Jenkins. Par exemple, lors de la connexion à votre système à l'aide du port par défaut 8080 :
http://localhost:8080/env-vars.html
Via la commande shell set/printenv
Une autre méthode consiste à créer un travail Jenkins qui exécute une commande shell pour afficher les variables d'environnement. La sortie console de cette tâche est une version modifiée de la liste des variables d'environnement.
1. Sur le côté gauche du tableau de bord Jenkins, cliquez sur Nouvel élément .
2. Saisissez le nom Variable d'environnement s dans le champ approprié et sélectionnez Pipeline comme type d'élément.
3. Cliquez sur OK pour confirmer.
4. Faites défiler jusqu'au Pipeline section et ajoutez le code suivant :
pipeline{
agent any
stages{
stage("Env Variables"){
steps{
bat "set"
}
}
}
}
4. Cliquez sur Enregistrer pour confirmer les modifications apportées au pipeline.
5. Cliquez sur Construire maintenant lien sur le côté gauche pour créer une nouvelle version de pipeline.
6. Sous Historique des compilations , cliquez sur le numéro de build pour accéder aux options de build.
7. Cliquez sur Sortie de la console sur le côté gauche.
La sortie de la console La page affiche la sortie de la commande shell. Dans ce cas, il s'agit d'une liste de variables d'environnement Jenkins :
Comment lire les variables d'environnement dans le pipeline Jenkins
Il existe deux façons de lire et d'accéder aux variables d'environnement Jenkins :
- Utilisation de
env
objet avec le nom de la variable. - Utiliser le nom court de la variable.
Par exemple, nous utilisons le BUILD_NUMBER variable, qui contient le numéro de build du pipeline actuel. Ce code illustre les deux méthodes de lecture de la variable :
pipeline {
agent any
stages {
stage("Env Variables") {
steps {
echo "The current build number is ${env.BUILD_NUMBER}"
echo "Another method is to use \${BUILD_NUMBER}, which is ${BUILD_NUMBER}"
}
}
}
}
Dans l'exemple ci-dessus, Jenkins lit la variable avec :
${env.BUILD_NUMBER}
:Utilisation deenv
objet.${BUILD_NUMBER}
:Utilisation du nom court de la variable.
La sortie affiche le numéro de build actuel :
Comment définir une variable d'environnement dans un pipeline Jenkins
Les utilisateurs peuvent définir des variables d'environnement Jenkins au niveau global ou local. Ajoutez des variables d'environnement globales via le tableau de bord Jenkins, tandis que les variables locales sont ajoutées à l'aide de pipelines déclaratifs, impératifs et scriptés.
Variables d'environnement global Jenkins
Dans Jenkins, n'importe quel pipeline ou travail peut accéder et lire des variables d'environnement globales. Pour ajouter une nouvelle variable d'environnement globale à l'aide du tableau de bord Jenkins :
1. Sur le côté gauche du tableau de bord Jenkins, cliquez sur Gérer Jenkins .
2. Sous Configuration du système section, cliquez sur Configurer le système .
3. Faites défiler vers le bas jusqu'à ce que vous atteigniez les Propriétés globales section. Cochez la case à côté de Variables d'environnement et cliquez sur Ajouter bouton pour ajouter une nouvelle variable.
4. Entrez le nom et la valeur de la nouvelle variable dans les champs appropriés.
5. Cliquez sur Enregistrer bouton pour enregistrer les nouvelles variables.
Variables d'environnement locales Jenkins
Vous pouvez définir une variable d'environnement local dans Jenkins à l'aide du pipeline déclaratif. Cette méthode utilise l'environnement environment {}
syntaxe de bloc :
environment {
[variable name] = "[variable value]"
}
Placer ce bloc au début du pipeline signifie que la variable est disponible pour être utilisée à n'importe quelle étape du pipeline. Le placer à une étape particulière signifie qu'il n'est disponible que pendant les étapes de cette étape et de cette étape uniquement.
Une autre méthode consiste à utiliser un env
objet dans un script pour définir impérativement une variable d'environnement :
script {
env. [variable name] = "[variable value]"
}
Enfin, en utilisant un withEnv([]) {}
block définit une variable d'environnement locale dans le cadre d'un pipeline scripté :
withEnv(["[variable name]= [variable value]"])
Par exemple, ce code utilise les trois méthodes décrites ci-dessus dans un seul pipeline pour définir les variables d'environnement locales :
pipeline {
agent any
environment {
DATE = "December 17th"
}
stages {
stage("Env Variables") {
environment {
NAME = "Alex"
}
steps {
echo "Today is ${env.DATE}"
echo "My name ${env.NAME}"
script {
env.WEBSITE = "phoenixNAP KB"
}
echo "This is an example for ${env.WEBSITE}"
withEnv(["TEST_VARIABLE=TEST_VALUE"]) {
echo "The value of TEST_VARIABLE is ${env.TEST_VARIABLE}"
}
}
}
}
}
Dans cet exemple, nous définissons la DATE
et NAME
variables d'environnement de manière déclarative. DATE
est au sommet du pipeline et peut être utilisé à chaque étape, tandis que NAME
est dans les "Env Variables"
étape, nous ne pouvons donc l'utiliser qu'à l'intérieur de cette étape. Le WEBSITE
variable est définie de manière impérative, et TEST_VARIABLE
fait partie d'un pipeline scripté.
La sortie de la console pour ce pipeline montre que Jenkins est capable d'accéder et de lire avec succès chaque variable :
Injecter des variables d'environnement
Ajout du plugin EnvInject à Jenkins vous permet d'injecter des variables d'environnement lors du démarrage de la construction. Ceci est particulièrement utile lors de la création d'un projet freestyle dans Jenkins.
Suivez les étapes décrites ci-dessous pour ajouter le plugin EnvInject à Jenkins et injecter des variables :
1. Cliquez sur Gérer Jenkins sur le côté gauche du tableau de bord.
2. Dans la Configuration du système section, cliquez sur Gérer les plugins bouton.
3. Sous Disponible onglet, recherchez envinject . Cochez la case à côté de l'Injecteur d'environnement plugin et cliquez sur Installer sans redémarrer .
4. Une fois l'installation du plug-in terminée, revenez au tableau de bord. Cliquez sur Nouvel élément lien pour créer un nouveau projet, ajouter un nom et sélectionner le projet Freestyle saisir.
5. Cliquez sur OK pour créer un nouveau projet.
6. Faites défiler jusqu'à Construire et cliquez sur Ajouter des étapes de compilation pour ouvrir un menu déroulant avec les options disponibles. Sélectionnez Injecter des variables d'environnement .
7. Si vous souhaitez ajouter des variables d'environnement à partir d'un fichier de propriétés, ajoutez le chemin d'accès au fichier dans le Chemin du fichier de propriétés domaine. Une autre option consiste à ajouter les nouvelles variables directement au contenu des propriétés champ, en utilisant le [variable name] = [variable value]
syntaxe.
8. Cliquez sur Enregistrer pour confirmer l'ajout de la nouvelle variable d'environnement.
Comment remplacer la variable d'environnement dans Jenkins
Le pipeline Jenkins permet aux utilisateurs de remplacer les variables d'environnement, en remplaçant la valeur actuelle de la variable par une nouvelle.
Le processus de remplacement suit plusieurs règles lors de la détermination de la priorité des variables :
- Le
withEnv([]) { }
block remplace toute variable d'environnement. - Variables définies à l'aide de
env
l'objet ne peut pas remplacer ceux définis à l'aide de l'environnementenvironment {}
bloquer. - Variables définies à l'aide de
env
l'objet ne peut remplacer que les autres variables définies avec leenv
objet.