Agence web » Actualités du digital » Comment définir des variables dans vos pipelines CI GitLab – CloudSavvy IT

Comment définir des variables dans vos pipelines CI GitLab – CloudSavvy IT

Le système Variables de GitLab CI vous permet d’injecter des données dans vos environnements de travail CI. Vous pouvez utiliser des variables pour fournir des valeurs de configuration, créer des pipelines réutilisables et éviter de coder en dur des informations sensibles dans votre .gitlab-ci.yml des dossiers.

Dans ce guide, nous verrons comment vous pouvez définir et utiliser des variables dans votre propre système CI. Plusieurs options sont disponibles en fonction de l’endroit où vous souhaitez afficher les valeurs et de la fréquence à laquelle vous souhaitez les modifier.

Les bases

Dans leur forme la plus simple, les variables sont des paires clé-valeur qui sont injectées en tant que variables d’environnement dans le contexte d’exécution de votre pipeline. Vous pouvez les référencer dans votre .gitlab-ci.yml fichier en tant que variables d’environnement standard :

test:
  script:
    - echo "$EXAMPLE_VARIABLE"

Vous pouvez échapper à la $ personnage à l’aide de la $$VARIABLE syntaxe:

test:
  script:
    - echo "$$EXAMPLE_VARIABLE"

Cet exemple entraînerait $EXAMPLE_VARIABLE à enregistrer, au lieu du valeur du EXAMPLE_VARIABLE variables comme indiqué ci-dessus.

Les variables sont disponibles dans l’environnement du travail. Elles peuvent également être interpolées dans les valeurs d’autres champs de votre .gitlab-ci.yml fichier, permettant la configuration dynamique du pipeline :

build:
  image: $CI_REGISTRY_IMAGE/build-utils:latest

GitLab CI définit plusieurs variables intégrées qui sont toujours disponibles. Ceux-ci incluent les détails de la validation, de la branche et de la demande de fusion sur lesquels le pipeline s’exécute. Les variables prédéfinies permettent également d’accéder aux informations d’identification par tâche pour accéder à d’autres fonctionnalités de GitLab telles que le registre de conteneurs et le proxy de dépendance.

Au-delà de ces variables intégrées, vous pouvez définir vos propres valeurs à plusieurs endroits. Les variables sont prises en charge au niveau de l’instance, du groupe, du projet et du pipeline, ce qui vous donne de la flexibilité lors de la définition des valeurs de secours, des valeurs par défaut et des remplacements. Vous pouvez définir des variables à l’aide de l’interface utilisateur GitLab ou de l’API ; nous nous concentrons sur l’interface utilisateur dans ce guide.

Définir une variable

Les variables sont créées sur l’écran Paramètres > CI/CD > Variables de la portée dans laquelle vous souhaitez qu’elles soient disponibles. Pour une variable au niveau du projet, cela signifie aller dans Paramètres > CI/CD à partir de la barre latérale gauche de GitLab tout en affichant une page dans le projet. De même, pour les variables au niveau du groupe, accédez au groupe et utilisez la barre latérale pour accéder à ses paramètres CI. Les variables au niveau de l’instance sont situées via le même itinéraire dans la zone d’administration de GitLab.

Développez la section « Variables » pour afficher toutes les variables déjà définies. Cliquez sur le bouton bleu « Ajouter une variable » pour commencer à ajouter un nouvel élément à la liste.

Chaque variable a besoin d’une clé unique ; c’est ainsi que vous référencerez la variable dans votre pipeline et ses scripts. Le nom que vous choisissez doit être compatible avec le shell qui exécutera votre travail – si vous choisissez un mot-clé réservé, votre travail pourrait échouer. Toutes les variables doivent être une chaîne valide contenant uniquement des caractères alphanumériques et des traits de soulignement.

Définissez ensuite la valeur de votre variable. Lorsque le menu déroulant « Type » est laissé sur « Variable », cette valeur sera injectée telle quelle chaque fois que vous référencerez la variable dans votre pipeline. Changer le type en « Fichier » injectera la valeur en tant que fichier temporaire dans votre environnement de construction ; la valeur de la variable d’environnement sera le chemin d’accès à ce fichier temporaire. Cela peut être un moyen plus sûr d’injecter des données sensibles si votre application est prête à lire la valeur finale à partir du fichier spécifié.

Une fois que vous avez terminé, cliquez sur le bouton vert « Ajouter une variable » pour terminer le processus. Vous pouvez désormais référencer votre variable dans des pipelines qui s’exécutent dans la portée dans laquelle vous l’avez définie. Pour une variable de projet, elle sera définie pour les pipelines à l’intérieur de ce projet, tandis que les variables au niveau de l’instance seront disponibles pour chaque pipeline sur votre serveur GitLab.

Les variables peuvent être gérées à tout moment en revenant à l’écran des paramètres de l’étendue dans laquelle elles sont définies. Cliquez sur le bouton Modifier (icône en forme de crayon) à côté de n’importe quelle variable pour afficher la boîte de dialogue d’édition et modifier les propriétés de la variable. Cette boîte de dialogue permet également de supprimer les variables redondantes.

Variables protégées

Les variables peuvent être marquées comme « protégées » en cochant la case dans la boîte de dialogue « Ajouter une variable ». Cette option signifie que la variable ne sera définie que dans les pipelines s’exécutant sur des branches ou des balises protégées.

Les variables protégées sont idéales dans les cas où vous exposez une valeur sensible telle qu’une clé de déploiement qui ne sera pas utilisée dans chaque pipeline. Limiter cette valeur aux seuls pipelines qui en ont réellement besoin (comme les tâches de déploiement s’exécutant sur votre système protégé release branche) réduit le risque de fuite accidentelle.

Variables masquées

L’option « Masquer la variable » est un autre moyen d’améliorer la sécurité de vos variables. Lorsque cette case est cochée, GitLab filtrera automatiquement la valeur de la variable hors des journaux de travail collectés. Tout accidentel echo $SECRET_VALUE seront nettoyés, réduisant ainsi le risque qu’un utilisateur voie une valeur de jeton sensible lorsqu’il inspecte les journaux de travail à l’aide de l’interface utilisateur Web GitLab.

Un masquage réussi nécessite que les valeurs variables soient détectables de manière fiable dans les journaux. Par conséquent, cela ne fonctionne que pour les valeurs qui répondent à des exigences de formatage spécifiques. Les formats de jeton d’authentification les plus courants, ainsi que toutes les données encodées en Base64, seront compatibles. Le masquage ne fonctionne que pour les valeurs jusqu’à 4 Kio.

Variables au niveau de l’environnement

Les variables peuvent être affectées à des environnements spécifiques. Cette fonctionnalité permet à vos pipelines de fonctionner avec une configuration différente en fonction de l’environnement dans lequel ils sont déployés.

Utilisez la liste déroulante « Portée de l’environnement » dans la boîte de dialogue « Ajouter une variable » pour sélectionner un environnement pour votre variable. La variable ne sera définie que dans les pipelines qui référencent l’environnement sélectionné via le environment champ dans le .gitlab-ci.yml déposer.

Définition de variables dans .gitlab-ci.yml

Les variables peuvent être définies dans votre .gitlab-ci.yml fichier à l’aide d’un variables bloquer. Les variables répertoriées ici seront créées pour le travail si elles n’existent pas déjà ; sinon, ils remplaceront la valeur définie au niveau du projet ou supérieur.

Les variables peuvent être définies au niveau du pipeline avec un global variables section. Les tâches individuelles peuvent également avoir leurs propres variables. Les deux approches sont présentées ci-dessous, où la tâche intermédiaire remplace la valeur d’une variable au niveau du pipeline et définit en outre une variable unique spécifique à la tâche.

variables:
  DEPLOY_URL: example.com

deploy_staging:
  variables:
    DEPLOY_URL: staging.example.com
    DEPLOY_IS_STAGING_ENV: true
  script:
    - ./deploy.sh

deploy_production:
  script:
    - ./deploy.sh

Variables définies dans .gitlab-ci.yml les fichiers peuvent parfois être utilisés de différentes manières que celles définies dans l’interface utilisateur ou l’API GitLab. Vous pouvez utiliser une variable pour éviter de répéter des sections du fichier, même si ces valeurs ne sont pas susceptibles de changer ou d’être remplacées à l’avenir. D’où variables Les sections peuvent sembler plus proches des variables des langages de programmation que les clés de type configuration que l’on trouve couramment au niveau du projet et au-delà.

Remplacer des variables

Le système de variables de GitLab vous donne plusieurs points auxquels vous pouvez remplacer la valeur d’une variable avant qu’elle ne soit fixée pour un pipeline ou une tâche. L’ordre de priorité est relativement complexe mais peut être résumé comme suit :

  • Les variables prédéfinies de GitLab sont toujours définies en premier.
  • Variables définies dans .gitlab-ci.yml sont définies ensuite (les variables de travail sont plus spécifiques que les variables de pipeline).
  • Les variables définies au niveau de l’instance, du groupe et du projet sont superposées.
  • Les variables du déclencheur de pipeline spécifique remplacent tout ce qui précède.

Vous pouvez toujours exécuter un pipeline avec une valeur de variable spécifique en utilisant l’exécution manuelle. Rendez-vous sur la page CI/CD > Pipelines de votre projet et cliquez sur le bouton bleu « Exécuter le pipeline » en haut à droite.

Utilisez le menu déroulant pour sélectionner la branche ou la balise sur laquelle exécuter le pipeline. Utilisez ensuite le tableau « Variables » pour définir les variables à ajouter à cette exécution de pipeline. Celles-ci deviendront les valeurs les plus spécifiques, appliquées comme étape finale dans l’ordre de priorité des variables. Les variables définies ici ne seront pas enregistrées ni réutilisées avec un futur pipeline.

Résumé

L’implémentation des variables CI de GitLab est un mécanisme puissant et flexible pour configurer vos pipelines. Il y a tellement d’endroits où les variables peuvent être définies qu’il peut être difficile de déterminer où une valeur doit être située.

En général, il est généralement plus efficace de placer autant de valeurs que possible au niveau du groupe afin de ne pas avoir à vous répéter dans vos projets. Vous pouvez toujours remplacer une variable ultérieurement dans des projets spécifiques nécessitant une valeur différente. Les administrateurs GitLab auto-hébergés peuvent utiliser des variables d’instance pour exposer des valeurs partagées communes, bien que cela puisse entraîner une exposition involontaire d’informations si elles ne sont pas gérées avec soin.

★★★★★