Gestire le variabili nei gruppi di variabili con l'interfaccia della riga di comando di Azure DevOps
Servizi di Azure DevOps
La gestione delle variabili in Azure Pipelines è fondamentale per mantenere la flessibilità e la sicurezza nei flussi di lavoro CI/CD. Questa guida illustra come usare l'interfaccia della riga di comando di Azure DevOps per creare e gestire variabili sia segrete che nonsecret all'interno di un gruppo di variabili di Azure Pipelines. Usando i gruppi di variabili, è possibile centralizzare la gestione delle variabili e assicurarsi che le informazioni riservate vengano gestite in modo sicuro.
Con l'esempio riportato in questa guida si apprenderà come:
- Definire una pipeline di Azure Pipelines usando un file YAML archiviato in GitHub.
- Creare un gruppo di variabili contenente variabili sia segrete che nonsecret.
- Eseguire la pipeline usando l'interfaccia della riga di comando di Azure DevOps e monitorare l'elaborazione e l'output dell'esecuzione.
Nota
Questo esempio illustra la funzionalità dell'interfaccia della riga di comando di Azure DevOps con gruppi di variabili. Per una maggiore sicurezza, definire le variabili nei gruppi di variabili nell'interfaccia utente di Pipelines o collegare un gruppo di variabili ai segreti in Azure Key Vault.
Prerequisiti
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido su Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
- Un repository GitHub con Azure Pipelines installato
- Token di accesso personale di GitHub per l'accesso
- Un'organizzazione di Azure DevOps con un token di accesso personale (PAT) per l'autenticazione
- Autorizzazioni di amministratore raccolta progetti nell'organizzazione Azure DevOps
Salvare il file YAML della pipeline
Salvare la definizione di pipeline YAML seguente come file denominato azure-pipelines.yml nella directory radice e main
nel ramo del repository GitHub.
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)
Script di esempio
Questo esempio esegue le attività seguenti:
- Creare le risorse DevOps
- Eseguire la pipeline
- Modificare i valori delle variabili tre volte
- Eseguire di nuovo la pipeline ogni volta che i valori delle variabili vengono modificati
Lo script crea le risorse seguenti in Azure DevOps:
- Un progetto nell'organizzazione DevOps
- Connessione al servizio GitHub
- Una pipeline
- Gruppo di variabili con due variabili nonsecret e una variabile segreta
Prima di eseguire lo script, sostituire i segnaposto seguenti nel modo seguente:
<devops-organization>
Nome dell'organizzazione di Azure DevOps<github-organization>
Nome utente o organizzazione GitHub<github-repository>
Nome del repository GitHub<pipelinename>
Nome della pipeline compreso tra 3 e 19 caratteri e contiene solo numeri e lettere minuscole. Lo script aggiunge un identificatore univoco a cinque cifre.
Salvare il pat di GitHub nell'ambiente locale.
AZURE_DEVOPS_EXT_GITHUB_PAT=<your-github-pat>
Dopo aver archiviato il file YAML in GitHub, eseguire lo script dell'interfaccia della riga di comando di Azure DevOps seguente in una shell Bash in Cloud Shell o in locale.
#!/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:"
Pulire le risorse
Per evitare addebiti per il progetto di Azure, è possibile eliminare il progetto di esempio, che elimina anche la relativa risorsa.
Copiare l'oggetto id
del progetto di esempio dall'output del comando seguente:
az devops project list --org <your-organization>
Eliminare il progetto eseguendo il comando seguente:
az devops project delete --id <project-id> --org <your-organization> --yes
Pulire l'ambiente locale eseguendo i comandi seguenti:
export AZURE_DEVOPS_EXT_GITHUB_PAT=""
az devops configure --defaults organization="" project=""
Riferimenti all'interfaccia della riga di comando di Azure
L'esempio in questo articolo usa i comandi seguenti dell'interfaccia della riga di comando di Azure:
- 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