Verwalten von Variablen in Variablengruppen mit der Azure DevOps CLI
Azure DevOps Services
Das Verwalten von Variablen in Azure Pipelines ist ausschlaggebend für die Aufrechterhaltung von Flexibilität und Sicherheit in Ihren CI/CD-Workflows. In diesem Handbuch wird veranschaulicht, wie Sie die Azure DevOps CLI verwenden, um geheime und nicht geheime Variablen innerhalb einer Variablengruppe von Azure Pipelines zu erstellen und zu verwalten. Mithilfe von Variablengruppen können Sie die Verwaltung von Variablen zentralisieren und sicherstellen, dass vertrauliche Informationen sicher behandelt werden.
Anhand des Beispiels in dieser Anleitung erfahren Sie, wie Sie:
- Definieren Sie eine Azure-Pipeline mithilfe einer YAML-Datei, die in GitHub gespeichert ist.
- Erstellen Sie eine Variablengruppe, die sowohl geheime als auch nicht geheime Variablen enthält.
- Führen Sie die Pipeline mithilfe der Azure DevOps CLI aus, und überwachen Sie die Ausführungsverarbeitung und -ausgabe.
Hinweis
In diesem Beispiel wird die Funktionalität von Azure DevOps CLI mit variablen Gruppen herabgestuft. Um die Sicherheit zu erhöhen, definieren Sie Variablen in Variablengruppen in der Pipelines-Benutzeroberfläche, oder verknüpfen Sie eine variable Gruppe mit geheimen Schlüsseln in Azure Key Vault.
Voraussetzungen
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.
Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
- Ein GitHub-Repository mit installiertem Azure Pipelines
- Ein persönliches Zugriffstoken (PAT) für GitHub.
- Eine Azure DevOps-Organisation mit einem persönlichen Zugriffstoken (Personal Access Token, PAT) für die Authentifizierung
- Berechtigungen für den Projektsammlungsadministrator in der Azure DevOps-Organisation
Speichern der YAML-Datei der Pipeline
Speichern Sie die folgende YAML-Pipelinedefinition als Datei mit dem Namen azure-pipelines.yml im Stammverzeichnis und im main
-Zweig Ihres GitHub-Repositorys.
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)
Das Beispiel-Skript
Das Beispiel führt die folgenden Aufgaben aus:
- Erstellen der DevOps-Ressourcen
- Führen Sie die Pipeline aus.
- Dreimaliges Ändern der Variablenwerte
- Führen Sie die Pipeline bei jeder Änderung der Variablenwerte erneut aus.
Das Skript erstellt die folgenden Ressourcen in Azure DevOps:
- Ein Projekt in Ihrer DevOps-Organisation
- Eine GitHub-Dienstverbindung
- Eine Pipeline
- Eine Variablengruppe mit zwei nicht geheimen Variablen und einer geheimen Variablen
Ersetzen Sie vor dem Ausführen des Skripts die folgenden Platzhalter wie folgt:
<devops-organization>
Name Ihrer Azure DevOps-Organisation<github-organization>
Name Ihrer GitHub-Organisation oder Benutzername<github-repository>
Name Ihres GitHub-Repositorys<pipelinename>
Ein Name für die Pipeline, der 3 bis 19 Zeichen lang ist und nur Ziffern und Kleinbuchstaben enthält. Das Skript fügt einen fünfstelligen eindeutigen Bezeichner hinzu.
Speichern Sie Ihren GitHub-PAT in der lokalen Umgebung.
AZURE_DEVOPS_EXT_GITHUB_PAT=<your-github-pat>
Nachdem Sie die YAML-Datei in GitHub gespeichert haben, führen Sie das folgende Azure DevOps CLI-Skript in einer Bash-Shell in Cloud Shell oder lokal aus.
#!/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:"
Bereinigen von Ressourcen
Um Kosten für das Azure-Projekt zu vermeiden, können Sie das Beispielprojekt löschen, wodurch auch seine Ressource gelöscht wird.
Kopieren Sie id
des Beispielprojekt aus der Ausgabe des folgenden Befehls:
az devops project list --org <your-organization>
Löschen Sie das Projekt, indem Sie den folgenden Befehl ausführen:
az devops project delete --id <project-id> --org <your-organization> --yes
Bereinigen Sie Ihre lokale Umgebung, indem Sie die folgenden Befehle ausführen:
export AZURE_DEVOPS_EXT_GITHUB_PAT=""
az devops configure --defaults organization="" project=""
Azure CLI-Referenzen
Im Beispiel in diesem Artikel werden die folgenden Azure CLI-Befehle verwendet:
- 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