Variabelen in variabelegroepen beheren met de Azure DevOps CLI
Azure DevOps Services
Het beheren van variabelen in Azure Pipelines is van cruciaal belang voor het behouden van flexibiliteit en beveiliging in uw CI/CD-werkstromen. In deze handleiding ziet u hoe u de Azure DevOps CLI gebruikt om zowel geheime als niet-geheime variabelen te maken en te beheren binnen een Azure Pipelines-variabelegroep. Met behulp van variabelegroepen kunt u het beheer van variabelen centraliseren en ervoor zorgen dat gevoelige informatie veilig wordt verwerkt.
Met het voorbeeld in deze handleiding leert u het volgende:
- Definieer een Azure Pipelines-pijplijn met behulp van een YAML-bestand dat is opgeslagen in GitHub.
- Maak een variabelegroep die zowel geheime als niet-geheime variabelen bevat.
- Voer de pijplijn uit met behulp van de Azure DevOps CLI en bewaak de verwerking en uitvoer van de uitvoering.
Notitie
In dit voorbeeld ziet u de functionaliteit van Azure DevOps CLI met variabele groepen. Voor betere beveiliging definieert u variabelen in variabelengroepen in de gebruikersinterface van pijplijnen of koppelt u een variabelegroep aan geheimen in Azure Key Vault.
Vereisten
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- Een GitHub-opslagplaats waarop Azure Pipelines is geïnstalleerd
- Een persoonlijk GitHub-toegangstoken (PAT) voor toegang
- Een Azure DevOps-organisatie met een persoonlijk toegangstoken (PAT) voor verificatie
- Beheerdersmachtigingen voor projectverzamelingen in de Azure DevOps-organisatie
YAML-bestand voor pijplijn opslaan
Sla de volgende YAML-pijplijndefinitie op als een bestand met de naam azure-pipelines.yml in de hoofdmap en main
vertakking van uw GitHub-opslagplaats.
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)
Het voorbeeldscript
In dit voorbeeld worden de volgende taken uitgevoerd:
- De DevOps-resources maken
- De pijplijn uitvoeren
- De variabelewaarden drie keer wijzigen
- De pijplijn opnieuw uitvoeren telkens wanneer de variabele waarden worden gewijzigd
Met het script worden de volgende resources gemaakt in Azure DevOps:
- Een project in uw DevOps-organisatie
- Een GitHub-serviceverbinding
- Een pijplijn
- Een variabelegroep met twee niet-secret-variabelen en één geheime variabele
Voordat u het script uitvoert, vervangt u de volgende tijdelijke aanduidingen als volgt:
<devops-organization>
De naam van uw Azure DevOps-organisatie<github-organization>
Uw GitHub-organisatie of gebruikersnaam<github-repository>
Naam van uw GitHub-opslagplaats<pipelinename>
Een naam voor de pijplijn tussen 3 en 19 tekens en bevat alleen cijfers en kleine letters. Met het script wordt een unieke id van vijf cijfers toegevoegd.
Sla uw GitHub PAT op in uw lokale omgeving.
AZURE_DEVOPS_EXT_GITHUB_PAT=<your-github-pat>
Nadat u het YAML-bestand in GitHub hebt opgeslagen, voert u het volgende Azure DevOps CLI-script uit in een Bash-shell in Cloud Shell of lokaal.
#!/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:"
Resources opschonen
Als u kosten voor het Azure-project wilt voorkomen, kunt u het voorbeeldproject verwijderen, waardoor ook de resource wordt verwijderd.
Kopieer het id
voorbeeldproject uit de uitvoer van de volgende opdracht:
az devops project list --org <your-organization>
Verwijder het project door de volgende opdracht uit te voeren:
az devops project delete --id <project-id> --org <your-organization> --yes
Schoon uw lokale omgeving op door de volgende opdrachten uit te voeren:
export AZURE_DEVOPS_EXT_GITHUB_PAT=""
az devops configure --defaults organization="" project=""
Azure CLI-verwijzingen
In het voorbeeld in dit artikel worden de volgende Azure CLI-opdrachten gebruikt:
- 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