Ajouter et utiliser des groupes de variables

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Les groupes de variables stockent des valeurs et des secrets potentiellement destinés à être transférés à un pipeline YAML ou mis à la disposition de plusieurs pipelines. Vous pouvez partager et utiliser des groupes de variables entre plusieurs pipelines dans le même projet.

Les variables secrètes dans les groupes de variables sont des ressources protégées. Vous pouvez ajouter des combinaisons d’approbations, de vérifications et d’autorisations de pipeline pour limiter l’accès aux variables secrètes d’un groupe de variables. L’accès aux variables non secrètes n’est pas limité par des approbations, des vérifications et des autorisations de pipeline.

Créer un groupe de variables

Vous ne pouvez pas créer de groupes de variables en YAML, mais ils peuvent être utilisés comme décrit dans Utiliser un groupe de variables.

Utiliser un groupe de variables

Pour utiliser une variable d’un groupe de variables, ajoutez une référence au groupe dans votre fichier YAML :

variables:
- group: my-variable-group

Les variables du groupe de variables peuvent ensuite être utilisées dans votre fichier YAML.

Si vous utilisez à la fois des variables et des groupes de variables, utilisez la syntaxe name/value pour les variables individuelles ne faisant pas partie d’un groupe :

variables:
- group: my-variable-group
- name: my-bare-variable
  value: 'value of my-bare-variable'

Pour référencer un groupe de variables, utilisez la syntaxe macro ou une expression d’exécution. Dans l’exemple suivant, le groupe my-variable-group a une variable nommée myhello.

variables:
- group: my-variable-group
- name: my-passed-variable
  value: $[variables.myhello] # uses runtime expression

steps:
- script: echo $(myhello) # uses macro syntax
- script: echo $(my-passed-variable) 

Vous pouvez référencer plusieurs groupes de variables dans le même pipeline. Si plusieurs groupes de variables incluent la même variable, le groupe inclus en dernier dans votre fichier YAML définit la valeur de la variable.

variables:
- group: my-first-variable-group
- group: my-second-variable-group

Vous pouvez également référencer un groupe de variables dans un modèle. Dans le modèle variables.yml, le groupe my-variable-group est référencé. Le groupe de variables inclut une variable nommée myhello.

# variables.yml
variables:
- group: my-variable-group

Dans ce pipeline, la variable $(myhello) du groupe de variables my-variable-group est incluse et variables.yml est référencé.

# azure-pipeline.yml
stages:
- stage: MyStage
  variables:
  - template: variables.yml
  jobs:
  - job: Test
    steps:
    - script: echo $(myhello)

Autoriser un groupe de variables

Pour utiliser un groupe de variables, vous devez l’autoriser. Si vous nommez le groupe de variables dans le code YAML uniquement, toute personne qui peut pousser (push) du code dans votre dépôt peut extraire le contenu des secrets inclus dans le groupe de variables. Pour autoriser le groupe, utilisez l’une des techniques suivantes :

  • Pour autoriser n’importe quel pipeline à utiliser le groupe de variables, accédez à Azure Pipelines. Cette option peut être intéressante si vous n’avez aucun secret dans le groupe. Sélectionnez Bibliothèque>Groupes de variables, puis sélectionnez le groupe de variables en question et activez le paramètre Autoriser l’accès à tous les pipelines.

  • Pour autoriser un groupe de variables pour un pipeline spécifique, ouvrez le pipeline, sélectionnez Modifier, puis mettez en file d’attente une build manuellement. Vous verrez une erreur d’autorisation de ressource et une action « Autoriser les ressources » sur l’erreur. Choisissez cette action pour ajouter explicitement le pipeline en tant qu’utilisateur autorisé du groupe de variables.

Notes

Si vous ajoutez un groupe de variables à un pipeline et que vous ne voyez pas d’erreur d’autorisation de ressource dans votre build alors que vous en attendez une, désactivez le paramètre Autoriser l’accès à tous les pipelines.

Accédez aux valeurs de variable d’un groupe de variables lié comme vous le faites pour des variables que vous définissez dans le pipeline lui-même. Par exemple, pour accéder à la valeur d’une variable nommée client d’un groupe de variables lié au pipeline, utilisez $(customer) dans un script ou un paramètre de tâche. Toutefois, vous ne pouvez pas accéder à des variables secrètes (variables chiffrées et variables de coffre de clés) directement dans des scripts. Elles doivent être transférées comme arguments à une tâche. Pour plus d’informations, consultez la section sur les secrets

Les modifications que vous apportez à un groupe de variables sont automatiquement disponibles pour toutes les définitions ou phases auxquelles le groupe de variables est lié.

Lister les groupes de variables

Utilisez l’interface de ligne de commande pour lister les groupes de variables pour les exécutions de pipelines avec la commande az pipelines variable-group list. Si l’extension Azure DevOps pour l’interface de ligne de commande est nouvelle pour vous, consultez Bien démarrer avec l’interface de ligne de commande d’Azure DevOps.

az pipelines variable-group list [--action {manage, none, use}]
                                 [--continuation-token]
                                 [--group-name]
                                 [--org]
                                 [--project]
                                 [--query-order {Asc, Desc}]
                                 [--top]

Paramètres facultatifs

  • action : Spécifie l’action qui peut être effectuée sur les groupes de variables. Les valeurs acceptées sont manage, none et use.
  • continuation-token : Liste les groupes de variables après la fourniture d’un jeton de continuation.
  • group-name : Nom du groupe de variables. Les caractères génériques sont acceptés, par exemple new-var*.
  • org : URL de l’organisation Azure DevOps. Configurez l’organisation par défaut avec az devops configure -d organization=ORG_URL. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config. Exemple : --org https://dev.azure.com/MyOrganizationName/.
  • project : Nom ou ID du projet. Configurez le projet par défaut avec az devops configure -d project=NAME_OR_ID. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config.
  • query-order : Liste les résultats dans l’ordre croissant ou décroissant (par défaut). Les valeurs acceptées sont Asc et Desc.
  • top : Nombre de groupes de variables à lister.

Exemple

La commande suivante liste les trois premiers groupes de variables dans l’ordre croissant et retourne les résultats sous forme de tableau.

az pipelines variable-group list --top 3 --query-order Asc --output table

ID    Name               Type    Number of Variables
----  -----------------  ------  ---------------------
1     myvariables        Vsts    2
2     newvariables       Vsts    4
3     new-app-variables  Vsts    3

Voir les détails d’un groupe de variables

Affichez les détails d’un groupe de variables de votre projet avec la commande az pipelines variable-group show. Si l’extension Azure DevOps pour l’interface de ligne de commande est nouvelle pour vous, consultez Bien démarrer avec l’interface de ligne de commande d’Azure DevOps.

az pipelines variable-group show --group-id
                                 [--org]
                                 [--project]

Paramètres

  • group-id : Obligatoire. ID du groupe de variables. Pour savoir comment rechercher l’ID du groupe de variables, consultez Lister les groupes de variables.
  • org : URL de l’organisation Azure DevOps. Configurez l’organisation par défaut avec az devops configure -d organization=ORG_URL. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config. Exemple : --org https://dev.azure.com/MyOrganizationName/.
  • project : Nom ou ID du projet. Configurez le projet par défaut avec az devops configure -d project=NAME_OR_ID. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config.

Exemple

La commande suivante affiche les détails du groupe de variables avec l’ID 4 et retourne les résultats au format YAML.

az pipelines variable-group show --group-id 4 --output yaml

authorized: false
description: Variables for my new app
id: 4
name: MyNewAppVariables
providerData: null
type: Vsts
variables:
  app-location:
    isSecret: null
    value: Head_Office
  app-name:
    isSecret: null
    value: Fabrikam

Supprimer un groupe de variables

Supprimez un groupe de variables de votre projet avec la commande az pipelines variable-group delete. Si l’extension Azure DevOps pour l’interface de ligne de commande est nouvelle pour vous, consultez Bien démarrer avec l’interface de ligne de commande d’Azure DevOps.

az pipelines variable-group delete --group-id
                                   [--org]
                                   [--project]
                                   [--yes]

Paramètres

  • group-id : Obligatoire. ID du groupe de variables. Pour savoir comment rechercher l’ID du groupe de variables, consultez Lister les groupes de variables.
  • org : URL de l’organisation Azure DevOps. Configurez l’organisation par défaut avec az devops configure -d organization=ORG_URL. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config. Exemple : --org https://dev.azure.com/MyOrganizationName/.
  • project : Nom ou ID du projet. Configurez le projet par défaut avec az devops configure -d project=NAME_OR_ID. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config.
  • yes : Facultatif. Ne pas demander de confirmation

Exemple

La commande suivante supprime le groupe de variables avec l’ID 1 sans demander confirmation.

az pipelines variable-group delete --group-id 1 --yes

Deleted variable group successfully.

Ajouter des variables à un groupe de variables

Avec l’interface de ligne de commande d’Azure DevOps, vous pouvez ajouter une variable à un groupe de variables dans un pipeline avec la commande az pipelines variable-group variable create. Si l’extension Azure DevOps pour l’interface de ligne de commande est nouvelle pour vous, consultez Bien démarrer avec l’interface de ligne de commande d’Azure DevOps.

az pipelines variable-group variable create --group-id
                                            --name
                                            [--org]
                                            [--project]
                                            [--secret {false, true}]
                                            [--value]

Paramètres

  • group-id : Obligatoire. ID du groupe de variables. Pour savoir comment rechercher l’ID du groupe de variables, consultez Lister les groupes de variables.
  • nom : Obligatoire. Nom de la variable que vous ajoutez.
  • org : URL de l’organisation Azure DevOps. Configurez l’organisation par défaut avec az devops configure -d organization=ORG_URL. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config. Exemple : --org https://dev.azure.com/MyOrganizationName/.
  • project : Nom ou ID du projet. Configurez le projet par défaut avec az devops configure -d project=NAME_OR_ID. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config.
  • secret : Facultatif. Indique si la valeur de la variable est un secret. Les valeurs acceptées sont false et true.
  • value : Obligatoire pour une variable non secrète. Valeur de la variable. Pour les variables secrètes, si le paramètre value n’est pas fourni, il est sélectionné à partir d’une variable d’environnement préfixée par AZURE_DEVOPS_EXT_PIPELINE_VAR_ ou bien l’utilisateur est invité à le saisir par le biais d’une entrée standard. Par exemple, une variable nommée MySecret peut être entrée à l’aide de la variable d’environnement AZURE_DEVOPS_EXT_PIPELINE_VAR_MySecret.

Exemple

La commande suivante crée une variable dans le groupe de variables avec l’ID 4. La nouvelle variable est nommée requires-login et a la valeur True. Le résultat s’affiche sous forme de tableau.

az pipelines variable-group variable create --group-id 4 --name requires-login --value True --output table

Name            Is Secret    Value
--------------  -----------  -------
requires-login  False        True

Lister les variables d’un groupe de variables

Vous pouvez lister les variables d’un groupe de variables avec la commande az pipelines variable-group variable list. Si l’extension Azure DevOps pour l’interface de ligne de commande est nouvelle pour vous, consultez Bien démarrer avec l’interface de ligne de commande d’Azure DevOps.

az pipelines variable-group variable list --group-id
                                          [--org]
                                          [--project]

Paramètres

  • group-id : Obligatoire. ID du groupe de variables. Pour savoir comment rechercher l’ID du groupe de variables, consultez Lister les groupes de variables.
  • org : URL de l’organisation Azure DevOps. Configurez l’organisation par défaut avec az devops configure -d organization=ORG_URL. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config. Exemple : --org https://dev.azure.com/MyOrganizationName/.
  • project : Nom ou ID du projet. Configurez le projet par défaut avec az devops configure -d project=NAME_OR_ID. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config.

Exemple

La commande suivante liste toutes les variables du groupe de variables avec l’ID 4 et affiche le résultat sous forme de tableau.

az pipelines variable-group variable list --group-id 4 --output table

Name            Is Secret    Value
--------------  -----------  -----------
app-location    False        Head_Office
app-name        False        Fabrikam
requires-login  False        True

Mettre à jour les variables d’un groupe de variables

Vous pouvez mettre à jour une variable d’un groupe de variables avec la commande az pipelines variable-group variable update. Si l’extension Azure DevOps pour l’interface de ligne de commande est nouvelle pour vous, consultez Bien démarrer avec l’interface de ligne de commande d’Azure DevOps.

az pipelines variable-group variable update --group-id
                                            --name
                                            [--new-name]
                                            [--org]
                                            [--project]
                                            [--prompt-value {false, true}]
                                            [--secret {false, true}]
                                            [--value]

Paramètres

  • group-id : Obligatoire. ID du groupe de variables. Pour savoir comment rechercher l’ID du groupe de variables, consultez Lister les groupes de variables.
  • nom : Obligatoire. Nom de la variable que vous ajoutez.
  • new-name : Facultatif. Spécifiez ce paramètre pour modifier le nom de la variable.
  • org : URL de l’organisation Azure DevOps. Configurez l’organisation par défaut avec az devops configure -d organization=ORG_URL. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config. Exemple : --org https://dev.azure.com/MyOrganizationName/.
  • project : Nom ou ID du projet. Configurez le projet par défaut avec az devops configure -d project=NAME_OR_ID. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config.
  • prompt-value : Définissez sur true pour mettre à jour la valeur d’une variable secrète à l’aide d’une variable d’environnement ou d’une invite par le biais d’une entrée standard. Les valeurs acceptées sont false et true.
  • secret : Facultatif. Indique si la valeur de la variable est gardée secrète. Les valeurs acceptées sont false et true.
  • value : Met à jour la valeur de la variable. Pour une variable secrète, utilisez le paramètre prompt-value pour être invité à la saisir par le biais d’une entrée standard. Pour les consoles non interactives, elle peut être choisie à partir d’une variable d’environnement préfixée par AZURE_DEVOPS_EXT_PIPELINE_VAR_. Par exemple, une variable nommée MySecret peut être entrée à l’aide de la variable d’environnement AZURE_DEVOPS_EXT_PIPELINE_VAR_MySecret.

Exemple

La commande suivante met à jour la variable requires-login avec la nouvelle valeur False dans le groupe de variables avec l’ID 4. Elle spécifie que la variable est un secret et présente le résultat au format YAML. Notez que la sortie affiche la valeur null et non False, car il s’agit d’une valeur secrète masquée.

az pipelines variable-group variable update --group-id 4 --name requires-login --value False --secret true --output yaml

requires-login:
  isSecret: true
  value: null

Supprimer des variables d’un groupe de variables

Supprimez une variable d’un groupe de variables avec la commande az pipelines variable-group variable delete. Si l’extension Azure DevOps pour l’interface de ligne de commande est nouvelle pour vous, consultez Bien démarrer avec l’interface de ligne de commande d’Azure DevOps.

az pipelines variable-group variable delete --group-id
                                            --name
                                            [--org]
                                            [--project]
                                            [--yes]

Paramètres

  • group-id : Obligatoire. ID du groupe de variables. Pour savoir comment rechercher l’ID du groupe de variables, consultez Lister les groupes de variables.
  • nom : Obligatoire. Nom de la variable que vous supprimez.
  • org : URL de l’organisation Azure DevOps. Configurez l’organisation par défaut avec az devops configure -d organization=ORG_URL. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config. Exemple : --org https://dev.azure.com/MyOrganizationName/.
  • project : Nom ou ID du projet. Configurez le projet par défaut avec az devops configure -d project=NAME_OR_ID. Obligatoire si ce paramètre n’est pas configuré par défaut ou récupéré avec git config.
  • yes : Facultatif. Ne pas demander de confirmation

Exemple

La commande suivante supprime la variable requires-login du groupe de variables avec l’ID 4 et invite à confirmer.

az pipelines variable-group variable delete --group-id 4 --name requires-login

Are you sure you want to delete this variable? (y/n): y
Deleted variable 'requires-login' successfully.

Remarque

Les coffres de clés utilisant le contrôle d’accès basé sur les rôles Azure (Azure RBAC) ne sont pas pris en charge.

Liez un coffre de clés Azure existant à un groupe de variables et mappez les secrets de coffre sélectifs au groupe de variables.

  1. Dans la page Groupes de variables, activez Lier les secrets d’un coffre de clés Azure Key Vault en tant que variables. Vous aurez besoin d’un coffre de clés existant contenant vos secrets. Créez un coffre de clés à l’aide du portail Azure.

    Capture d’écran d’un groupe de variables avec l’intégration à un coffre de clés Azure.

  2. Spécifiez le point de terminaison de votre abonnement Azure et le nom du coffre contenant vos secrets.

    Vérifiez que la connexion au service Azure dispose au moins des autorisations de gestion Obtenir et Lister sur le coffre pour les secrets. Activez Azure Pipelines pour définir ces autorisations en choisissant Autoriser en regard du nom du coffre. Ou définissez les autorisations manuellement dans le portail Azure :

    1. Ouvrez Paramètres pour le coffre, puis choisissez Stratégies d’accès>Ajouter nouveau.
    2. Sélectionnez Sélectionner le principal, puis choisissez le principal de service de votre compte client.
    3. Sélectionnez Autorisations du secret et vérifiez que les options Obtenir et Lister sont cochées.
    4. Sélectionnez OK pour enregistrer les modifications.
  3. Dans la page Groupes de variables, sélectionnez + Ajouter pour sélectionner des secrets spécifiques dans votre coffre à mapper à ce groupe de variables.

Gérer les secrets du coffre de clés

Consultez la liste suivante de conseils utiles pour gérer les secrets.

  • Seuls les noms de secrets sont mappés au groupe de variables, pas leurs valeurs. La valeur de secret la plus récente, extraite du coffre, est utilisée dans l’exécution du pipeline liée au groupe de variables.

  • Toute modification apportée aux secrets existants dans le coffre de clés est automatiquement disponible pour tous les pipelines utilisés par le groupe de variables.

  • Lorsque de nouveaux secrets sont ajoutés ou supprimés dans le coffre, les groupes de variables associés ne sont pas automatiquement mis à jour. Les secrets inclus dans le groupe de variables doivent être mis à jour explicitement afin que les pipelines qui utilisent le groupe de variables soient exécutés correctement.

  • Azure Key Vault prend en charge le stockage et la gestion des clés de chiffrement et des secrets dans Azure. Actuellement, l’intégration des groupes de variables Azure Pipelines prend en charge le mappage des secrets issus du coffre de clés Azure uniquement. Les clés de chiffrement et les certificats ne sont pas pris en charge.

Expansion de variables dans un groupe

Quand vous définissez une variable dans un groupe et que vous l’utilisez dans un fichier YAML, elle est égale à d’autres variables définies dans le fichier YAML. Pour plus d’informations sur la priorité des variables, consultez Variables.