Freigeben über


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.

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: