Hantera variabler i variabelgrupper med Azure DevOps CLI
Azure DevOps Services
Att hantera variabler i Azure Pipelines är avgörande för att upprätthålla flexibilitet och säkerhet i dina CI/CD-arbetsflöden. Den här guiden visar hur du använder Azure DevOps CLI för att skapa och hantera både hemliga och icke-sekretiska variabler i en Azure Pipelines-variabelgrupp. Genom att använda variabelgrupper kan du centralisera hanteringen av variabler och se till att känslig information hanteras på ett säkert sätt.
Med exemplet i den här guiden lär du dig att:
- Definiera en Azure Pipelines-pipeline med hjälp av en YAML-fil som lagras i GitHub.
- Skapa en variabelgrupp som innehåller både hemliga och icke-sekretiska variabler.
- Kör pipelinen med hjälp av Azure DevOps CLI och övervaka körningens bearbetning och utdata.
Kommentar
Det här exemplet demonstrerar funktionerna i Azure DevOps CLI med variabelgrupper. För ökad säkerhet definierar du variabler i variabelgrupper i pipelinegränssnittet eller länkar en variabelgrupp till hemligheter i Azure Key Vault.
Förutsättningar
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
- En GitHub-lagringsplats med Azure Pipelines installerat
- En personlig åtkomsttoken för GitHub (PAT) för åtkomst
- En Azure DevOps-organisation med en personlig åtkomsttoken (PAT) för autentisering
- Administratörsbehörigheter för projektsamling i Azure DevOps-organisationen
Spara YAML-pipelinefil
Spara följande YAML-pipelinedefinition som en fil med namnet azure-pipelines.yml i rotkatalogen och main
grenen av din GitHub-lagringsplats.
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)
Exempelskriptet
Det här exemplet utför följande uppgifter:
- Skapa DevOps-resurserna
- Köra pipelinen
- Ändra variabelvärdena tre gånger
- Kör pipelinen igen varje gång variabelvärdena ändras
Skriptet skapar följande resurser i Azure DevOps:
- Ett projekt i din DevOps-organisation
- En GitHub-tjänstanslutning
- En pipeline
- En variabelgrupp med två icke-sekretiska variabler och en hemlig variabel
Innan du kör skriptet ersätter du följande platshållare på följande sätt:
<devops-organization>
Ditt Azure DevOps-organisationsnamn<github-organization>
Din GitHub-organisation eller ditt användarnamn<github-repository>
Ditt GitHub-lagringsplatsnamn<pipelinename>
Ett namn på pipelinen som är mellan 3 och 19 tecken och som endast innehåller siffror och gemener. Skriptet lägger till en femsiffrig unik identifierare.
Spara din GitHub PAT i din lokala miljö.
AZURE_DEVOPS_EXT_GITHUB_PAT=<your-github-pat>
När du har lagrat YAML-filen i GitHub kör du följande Azure DevOps CLI-skript i ett Bash-gränssnitt i Cloud Shell eller lokalt.
#!/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:"
Rensa resurser
Om du vill undvika att debiteras för Azure-projektet kan du ta bort exempelprojektet, som också tar bort dess resurs.
id
Kopiera exempelprojektet från utdata från följande kommando:
az devops project list --org <your-organization>
Ta bort projektet genom att köra följande kommando:
az devops project delete --id <project-id> --org <your-organization> --yes
Rensa din lokala miljö genom att köra följande kommandon:
export AZURE_DEVOPS_EXT_GITHUB_PAT=""
az devops configure --defaults organization="" project=""
Azure CLI-referenser
Exemplet i den här artikeln använder följande Azure CLI-kommandon:
- 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