Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure DevOps Services | Azure DevOps Server
Het beheren van variabelen in Azure Pipelines is van cruciaal belang voor het behouden van flexibiliteit en beveiliging in uw CI/CD-werkstromen. In dit artikel wordt beschreven hoe u de Azure DevOps CLI gebruikt om geheime en 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 behulp van het voorbeeld in dit artikel 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 resultaten.
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 Aan de slag met 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. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Zie Extensies gebruiken en beheren met de Azure CLIvoor 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
- ubuntu-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
Met dit voorbeeldscript worden de volgende taken uitgevoerd:
- De DevOps-resources maken
- De pijplijn uitvoeren
- Wijzigt de variabelewaarden drie keer
- De pijplijn wordt opnieuw uitgevoerd telkens wanneer de waarden van de variabelen 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:
-
<devops-organization>De naam van uw Azure DevOps-organisatie. Als uw Azure DevOps-URL bijvoorbeeld ishttps://dev.azure.com/Contoso, gebruikt uContoso. -
<github-organization>Uw GitHub-organisatie of gebruikersnaam. Een voorbeeld hiervan ismyusernameofmyorganization. -
<github-repository>De naam van uw GitHub-opslagplaats. Als de URL van uw opslagplaats bijvoorbeeld ishttps://github.com/myusername/my-repo, gebruikt umy-repo. -
<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. Bijvoorbeeld:mypipeline.
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 Azure Cloud Shell of lokaal.
Belangrijk
Zorg ervoor dat u de nieuwste versie van de Azure CLI en de DevOps-extensie hebt geïnstalleerd. Voer az upgrade en az extension add --name azure-devops uit voordat u dit script uitvoert.
#!/bin/bash
# ===== CONFIGURATION =====
# Replace the placeholder values with your own.
devopsOrg="https://dev.azure.com/<devops-organization>"
githubOrg="<github-organization>"
githubRepo="<github-repository>"
pipelineName="<pipeline-name>"
repoName="$githubOrg/$githubRepo"
repoType="github"
branch="main"
# Declare other variables.
uniqueId=$RANDOM
devopsProject="Contoso DevOps Project $uniqueId"
serviceConnectionName="Contoso Service Connection $uniqueId"
variableGroupName="Contoso Variable Group $uniqueId"
# ===== AUTHENTICATION =====
# Sign in to Azure CLI and follow the sign-in instructions, if necessary.
echo "Signing in to Azure CLI..."
az login
# Sign in to Azure DevOps with your Azure DevOps PAT, if necessary.
# Uncomment the following line if your Azure AD account doesn't have Azure DevOps access.
# echo "Signing in to Azure DevOps..."
# az devops login
# ===== PROJECT CREATION =====
# Create the Azure DevOps project and set defaults.
echo "Creating Azure DevOps project..."
projectId=$(az devops project create \
--name "$devopsProject" \
--organization "$devopsOrg" \
--visibility private \
--query id \
--output tsv)
echo "Project created with ID: $projectId"
# Set default organization and project for subsequent commands.
az devops configure --defaults organization="$devopsOrg" project="$devopsProject"
pipelineRunUrlPrefix="$devopsOrg/$projectId/_build/results?buildId="
# ===== SERVICE CONNECTION =====
# Create GitHub service connection.
echo "Creating GitHub service connection..."
githubServiceEndpointId=$(az devops service-endpoint github create \
--name "$serviceConnectionName" \
--github-url "https://www.github.com/$repoName" \
--query id \
--output tsv)
echo "Service connection created with ID: $githubServiceEndpointId"
# ===== PIPELINE CREATION =====
# Create the pipeline from the YAML file.
echo "Creating 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 \
--output tsv)
echo "Pipeline created with ID: $pipelineId"
# ===== VARIABLE GROUP =====
# Create a variable group with 2 non-secret variables and 1 secret variable.
echo "Creating variable group..."
variableGroupId=$(az pipelines variable-group create \
--name "$variableGroupName" \
--authorize true \
--variables a=12 b=29 \
--query id \
--output tsv)
echo "Variable group created with ID: $variableGroupId"
# Add a secret variable to the group.
echo "Adding secret variable to the group..."
az pipelines variable-group variable create \
--group-id $variableGroupId \
--name contososecret \
--secret true \
--value 17
# ===== PIPELINE RUNS =====
# Run the pipeline for the first time.
echo "Running pipeline (1st run)..."
pipelineRunId1=$(az pipelines run \
--id $pipelineId \
--query id \
--output tsv)
echo "Pipeline run 1 started with ID: $pipelineRunId1"
echo "Go to the pipeline run's web page to view the output results of the 'Test variable group variables' job."
echo "URL: ${pipelineRunUrlPrefix}${pipelineRunId1}"
read -p "Press Enter to change the value of variable 'a', then run again:"
# Change the value of one of the variable group's nonsecret variables.
echo "Updating variable 'a'..."
az pipelines variable-group variable update \
--group-id $variableGroupId \
--name a \
--value 22
# Run the pipeline for the second time.
echo "Running pipeline (2nd run)..."
pipelineRunId2=$(az pipelines run \
--id $pipelineId \
--query id \
--output tsv)
echo "Pipeline run 2 started with ID: $pipelineRunId2"
echo "URL: ${pipelineRunUrlPrefix}${pipelineRunId2}"
read -p "Press Enter to change the value of the secret variable, then run once more:"
# Change the value of the variable group's secret variable.
echo "Updating secret variable 'contososecret'..."
az pipelines variable-group variable update \
--group-id $variableGroupId \
--name contososecret \
--value 35
# Run the pipeline for the third time.
echo "Running pipeline (3rd run)..."
pipelineRunId3=$(az pipelines run \
--id $pipelineId \
--query id \
--output tsv)
echo "Pipeline run 3 started with ID: $pipelineRunId3"
echo "URL: ${pipelineRunUrlPrefix}${pipelineRunId3}"
read -p "Press Enter to continue:"
Resources opschonen
Verwijder het voorbeeldproject om te voorkomen dat er kosten in rekening worden gebracht voor het Azure-project. Met deze actie wordt ook de resource 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
(Gebruik deze opdracht om een nieuw DevOps-project te maken)- az devops project delete - Verwijder een DevOps-project
- az devops project list
- az devops service-endpoint github create
- az login
- az pipelines create commando om een nieuwe pipeline te maken
- az pipelines delete
- az pipelines run
- az pipelines variable-group create
- Voer de opdracht az pipelines variable-group delete uit
- Voor het maken van een variabele in een variabelengroep binnen Azure-pipelines, voer het commando az pipelines variable-group variable create uit.
- az pipelines variabele-groep variabele bijwerken