Bienvenue dans notre série « Premiers pas avec GitLab », conçue pour guider les nouveaux utilisateurs dans la prise en main de la plateforme DevSecOps de GitLab.
Après avoir exploré les bases de l'approche CI/CD de GitLab dans notre précédent article, concentrons-nous à présent sur les variables CI/CD afin de tirer pleinement parti de leur potentiel.
Qu’est-ce qu’une variable CI/CD ?
Les variables CI/CD sont des paires clé-valeur dynamiques que vous pouvez définir à différents niveaux (projet, groupe ou instance par exemple) au sein de votre environnement GitLab. Elles permettent de personnaliser les pipelines CI/CD, de centraliser les configurations et de gérer en toute sécurité des données sensibles. Intégrées directement dans le fichier .gitlab-ci.yml comme des espaces réservés pour les valeurs correspondantes, elles facilitent la maintenance, renforcent la sécurité et améliorent la flexibilité des workflows CI/CD.
Quel est le rôle des variables CI/CD ?
Les variables CI/CD offrent de nombreux avantages :
Flexibilité : adaptez facilement vos pipelines à différents environnements, configurations ou cibles de déploiement sans modifier votre script CI/CD principal.
Sécurité : stockez en toute sécurité des informations sensibles telles que des clés API, des mots de passe et des tokens sans les exposer dans votre code.
Maintenabilité : en centralisant les valeurs, elles simplifient la gestion et les mises à jour de votre configuration CI/CD pour qu'elle reste structurée correctement.
Réutilisation : définies une seule fois, elles peuvent être réutilisées dans plusieurs projets, ce qui favorise la cohérence et réduit les doublons.
Portées des variables CI/CD : projet, groupe et instance
GitLab permet de définir des variables CI/CD à différentes niveaux hiérarchiques du projet, avec un contrôle précis sur leur visibilité, leur portée et leur accessibilité :
Variables au niveau du projet : elles sont propres à un seul projet et idéales pour stocker des paramètres spécifiques, notamment :
L'URL de déploiement : définissez des URL distinctes pour les environnements de préproduction et de production.
Les identifiants de connexion à la base de données : stockez les données de connexion à la base de données afin de pouvoir les utiliser lors d'un test ou d'un déploiement.
Les feature flags : activez ou désactivez les fonctionnalités à différentes étapes de votre pipeline.
Exemple : dans le cadre de votre projet MyWebApp, vous souhaitez stocker l'URL de déploiement de production. Vous pouvez définir une variable au niveau du projet, nommée DPROD_DEPLOY_URL, avec la valeur https://mywebapp.com d'URL de production.
Variables au niveau du groupe : elles sont partagées par tous les projets d'un groupe GitLab. Elles sont utiles pour centraliser des paramètres communs à plusieurs projets, notamment :
Les clés API de services partagés : stockez-les pour des services tels qu'AWS, Google Cloud ou Docker Hub qui sont utilisés par plusieurs projets au sein du groupe.
Les paramètres de configuration généraux : définissez des paramètres de configuration communs qui s'appliquent à tous les projets du groupe.
Exemple : dans votre groupe Web Apps, vous souhaitez stocker une clé API pour Docker Hub. Vous pouvez définir une variable au niveau du groupe, nommée DOCKER_HUB_API_KEY, avec la valeur de clé API correspondante.
Variables au niveau de l'instance : elles sont disponibles pour tous les projets d'une instance GitLab et couramment utilisées pour les paramètres généraux qui s'appliquent à l'ensemble de l'entreprise, notamment :
Le token d'enregistrement de runner par défaut : fournissez un token par défaut pour l'enregistrement de nouveaux runners.
Les informations sur la licence : stockez les clés de licence des fonctionnalités GitLab ou des outils tiers.
Les paramètres d'environnement généraux : définissez des variables d'environnement qui doivent être disponibles pour tous les projets.
Exemple : vous souhaitez définir une image Docker par défaut pour tous les projets de votre instance GitLab. Vous pouvez définir une variable au niveau de l'instance, nommée DEFAULT_DOCKER_IMAGE, avec la valeur ubuntu:latest.
Comment définir des variables CI/CD ?
Pour définir une variable CI/CD, voici comment procéder :
Cliquez sur les boutons Paramètres > CI/CD de votre projet, groupe ou instance.
Accédez à la section Variables.
Cliquez sur Ajouter une variable.
Saisissez la clé (par exemple, API_KEY) et la valeur correspondante.
Facultatif : cochez l'option Protéger la variable si elle contient des données sensibles afin de restreindre son utilisation aux pipelines qui s'exécutent sur des branches ou des tags protégés.
Facultatif : cochez la case Masquer la variable pour masquer sa valeur dans les job logs, afin d'éviter toute exposition accidentelle.
Cliquez sur Enregistrer la variable.
Comment utiliser des variables CI/CD ?
Pour utiliser une variable CI/CD dans votre fichier .gitlab-ci.yml, faites simplement précéder le nom de la variable du symbole $ :
Comment utiliser les variables CI/CD prédéfinies dans GitLab ?
GitLab met à disposition un ensemble de variables CI/CD prédéfinies que vous pouvez utiliser dans vos pipelines CI/CD. Celles-ci fournissent des informations contextuelles sur le pipeline, le job, le projet en cours, et bien plus encore.
Voici les variables plus couramment utilisées :
$CI_COMMIT_SHA : SHA de validation qui déclenche le pipeline
$CI_PROJECT_DIR : répertoire dans lequel le projet est cloné
$CI_PIPELINE_ID : ID du pipeline en cours
$CI_ENVIRONMENT_NAME : nom de l'environnement de déploiement cible (le cas échéant)
Bonnes pratiques pour l'utilisation des variables CI/CD
Gérez en toute sécurité les variables sensibles : utilisez des variables protégées et masquées pour stocker les clés API, les mots de passe et tout autre secret.
Évitez de coder en dur les valeurs : stockez les valeurs de configuration dans des variables afin de renforcer la flexibilité et la maintenance de vos pipelines.
Organisez vos variables : utilisez des noms explicites et regroupez les variables par usage pour faciliter leur gestion.
Choisissez la portée appropriée : définissez vos variables au niveau du projet, groupe ou instance en fonction de leur utilisation prévue et de leur visibilité.
Tirez parti de la puissance des variables CI/CD
Les variables CI/CD sont un outil puissant pour personnaliser et sécuriser vos pipelines GitLab. En maîtrisant leur fonctionnement et en comprenant leurs différentes portées, vous pouvez créer des workflows plus flexibles, plus faciles à maintenir et plus efficaces.
Cet article de blog vous a plu ou vous avez des questions ou des commentaires ? Partagez vos réflexions en créant un sujet dans le forum de la communauté GitLab.