Gérer des variables dans des groupes de variables avec l'interface de programmation Azure DevOps CLI
Azure DevOps Services
La gestion des variables dans Azure Pipelines est cruciale pour maintenir la flexibilité et la sécurité dans vos workflows CI/CD. Ce guide montre comment utiliser l'Azure DevOps CLI pour créer et gérer des variables secrètes et non secrètes au sein d'un groupe de variables Azure Pipelines. En utilisant des groupes de variables, vous pouvez centraliser la gestion des variables et vous assurer que les informations sensibles sont traitées en toute sécurité.
Avec l'exemple de ce guide, vous apprendrez à :
- Définir un pipeline Azure Pipelines à l'aide d'un fichier YAML stocké dans GitHub.
- Créer un groupe de variables contenant des variables secrètes et non secrètes.
- Exécuter le pipeline à l'aide de la CLI Azure DevOps et surveiller le traitement de l'exécution et les résultats.
Remarque
Cet exemple illustre les fonctionnalités d’Azure DevOps CLI avec des groupes de variables. Pour une sécurité accrue, définissez des variables dans des groupes de variables dans l'interface utilisateur Pipelines ou liez un groupe de variables à des secrets dans Azure Key Vault.
Prérequis
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Un référentiel GitHub avec Azure Pipelines installé
- Un jeton d'accès personnel GitHub (PAT) pour l'accès
- Une organisation Azure DevOps avec un jeton d'accès personnel (PAT) pour l'authentification
- Permissions de l'administrateur de la collection de projets dans l'organisation Azure DevOps
Enregistrer le fichier YAML du pipeline
Enregistrez la définition de pipeline YAML suivante dans un fichier appelé azure-pipelines.ymldans le répertoire racine et la branche main
de votre référentiel GitHub.
parameters:
- name: image
displayName: 'Pool image'
default: ubuntu-latest
values:
- windows-latest
- windows-latest
- ubuntu-latest
- ubuntu-latest
- macOS-latest
- macOS-latest
- name: test
displayName: Run Tests?
type: boolean
default: false
variables:
- group: "Contoso Variable Group"
- name: va
value: $[variables.a]
- name: vb
value: $[variables.b]
- name: vcontososecret
value: $[variables.contososecret]
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- script: |
echo "Hello, world!"
echo "Pool image: ${{ parameters.image }}"
echo "Run tests? ${{ parameters.test }}"
displayName: 'Show runtime parameter values'
- script: |
echo "a=$(va)"
echo "b=$(vb)"
echo "contososecret=$(vcontososecret)"
echo
echo "Count up to the value of the variable group's nonsecret variable *a*:"
for number in {1..$(va)}
do
echo "$number"
done
echo "Count up to the value of the variable group's nonsecret variable *b*:"
for number in {1..$(vb)}
do
echo "$number"
done
echo "Count up to the value of the variable group's secret variable *contososecret*:"
for number in {1..$(vcontososecret)}
do
echo "$number"
done
displayName: 'Test variable group variables (secret and nonsecret)'
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
L'exemple de script
Cet exemple effectue les tâches suivantes :
- Créer les ressources DevOps.
- Exécuter le pipeline
- Modifier les valeurs des variables trois fois
- Exécuter à nouveau le pipeline à chaque fois que les valeurs des variables sont modifiées.
Le script crée les ressources suivantes dans Azure DevOps :
- Un projet dans votre organisation DevOps
- Une connexion au service GitHub
- Pipeline
- Un groupe de variables avec deux variables non secrètes et une variable secrète.
Avant d'exécuter le script, remplacez les espaces réservés suivants comme suit :
<devops-organization>
Nom de votre organisation Azure DevOps<github-organization>
Votre organisation GitHub ou votre nom d'utilisateur<github-repository>
Le nom de votre référentiel GitHub<pipelinename>
Nom du pipeline compris entre 3 et 19 caractères et contenant uniquement des chiffres et des lettres minuscules. Le script ajoute un identifiant unique à cinq chiffres.
Enregistrez votre PAT GitHub dans votre environnement local.
AZURE_DEVOPS_EXT_GITHUB_PAT=<your-github-pat>
Après avoir enregistré le fichier YAML dans GitHub, exécutez le script Azure DevOps CLI suivant dans un interpréteur de commande Bash dans Cloud Shell ou en local.
#!/bin/bash
# Provide placeholder variables.
devopsOrg="https://dev.azure.com/<devops-organization>"
githubOrg="<github-organization>"
githubRepo="<github-repository>"
pipelineName="<pipelinename>"
repoName="$githubOrg/$githubRepo"
repoType="github"
branch="main"
# Declare other variables.
uniqueId=$RANDOM
devopsProject="Contoso DevOps Project $uniqueId"
serviceConnectionName="Contoso Service Connection $uniqueId"
# Sign in to Azure CLI and follow the sign-in instructions, if necessary.
echo "Sign in."
az login
# Sign in to Azure DevOps with your Azure DevOps PAT, if necessary.
echo "Sign in to Azure DevOps."
az devops login
# Create the Azure DevOps project and set defaults.
projectId=$(az devops project create \
--name "$devopsProject" --organization "$devopsOrg" --visibility private --query id)
projectId=${projectId:1:-1} # Just set to GUID; drop enclosing quotes.
az devops configure --defaults organization="$devopsOrg" project="$devopsProject"
pipelineRunUrlPrefix="$devopsOrg/$projectId/_build/results?buildId="
# Create GitHub service connection.
githubServiceEndpointId=$(az devops service-endpoint github create \
--name "$serviceConnectionName" --github-url "https://www.github.com/$repoName" --query id)
githubServiceEndpointId=${githubServiceEndpointId:1:-1} # Just set to GUID; drop enclosing quotes.
# Create the pipeline.
pipelineId=$(az pipelines create \
--name "$pipelineName" \
--skip-first-run \
--repository $repoName \
--repository-type $repoType \
--branch $branch \
--service-connection $githubServiceEndpointId \
--yml-path azure-pipelines.yml \
--query id)
# Create a variable group with 2 non-secret variables and 1 secret variable.
# (contososecret < a < b). Then run the pipeline.
variableGroupId=$(az pipelines variable-group create \
--name "$variableGroupName" --authorize true --variables a=12 b=29 --query id)
az pipelines variable-group variable create \
--group-id $variableGroupId --name contososecret --secret true --value 17
pipelineRunId1=$(az pipelines run --id $pipelineId --open --query id)
echo "Go to the pipeline run's web page to view the output results of the 'Test variable group variables' job for the 1st run."
echo "If the web page doesn't automatically appear, go to:"
echo " ${pipelineRunUrlPrefix}${pipelineRunId1}"
read -p "Press Enter to change the value of one of the variable group's nonsecret variables, then run again:"
# Change the value of one of the variable group's nonsecret variables.
az pipelines variable-group variable update \
--group-id $variableGroupId --name a --value 22
pipelineRunId2=$(az pipelines run --id $pipelineId --open --query id)
echo "Go to the pipeline run's web page to view the output results of the 'Test variable group variables' job for the 2nd run."
echo "If the web page doesn't automatically appear, go to:"
echo " ${pipelineRunUrlPrefix}${pipelineRunId2}"
read -p "Press Enter to change the value of the variable group's secret variable, then run once more:"
# Change the value of the variable group's secret variable.
az pipelines variable-group variable update \
--group-id $variableGroupId --name contososecret --value 35
pipelineRunId3=$(az pipelines run --id $pipelineId --open --query id)
echo "Go to the pipeline run's web page to view the output results of the 'Test variable group variables' job for the 3rd run."
echo "If the web page doesn't automatically appear, go to:"
echo " ${pipelineRunUrlPrefix}${pipelineRunId3}"
read -p "Press Enter to continue:"
Nettoyer les ressources
Pour éviter d'encourir des frais pour le projet Azure, vous pouvez supprimer le projet d'exemple, ce qui supprime également sa ressource.
Copiez le id
de l'exemple de projet à partir de la sortie de la commande suivante :
az devops project list --org <your-organization>
Supprimez le projet en exécutant la commande suivante :
az devops project delete --id <project-id> --org <your-organization> --yes
Nettoyez votre environnement local en exécutant les commandes suivantes :
export AZURE_DEVOPS_EXT_GITHUB_PAT=""
az devops configure --defaults organization="" project=""
Références Azure CLI
L'exemple présenté dans cet article utilise les commandes Azure CLI suivantes :
- az devops configure
- az devops project create
- az devops project delete
- az devops project delete
- az devops service-endpoint github create
- az login
- az pipelines create
- az pipelines delete
- az pipelines run
- az pipelines variable-group create
- az pipelines variable-group delete
- az pipelines variable-group variable create
- az pipelines variable-group variable update