Gerenciar variáveis em grupos de variáveis com a CLI do Azure DevOps
Azure DevOps Services
O gerenciamento de variáveis no Azure Pipelines é crucial para manter a flexibilidade e a segurança em seus fluxos de trabalho de CI/CD. Este guia demonstra como usar a CLI do Azure DevOps para criar e gerenciar variáveis secretas e não secretas em um grupo de variáveis do Azure Pipelines. Ao usar grupos de variáveis, você pode centralizar o gerenciamento de variáveis e garantir que informações confidenciais sejam tratadas com segurança.
Com o exemplo deste guia, você aprenderá a:
- Defina um pipeline do Azure Pipelines usando um arquivo YAML armazenado no GitHub.
- Crie um grupo de variáveis contendo variáveis secretas e não secretas.
- Execute o pipeline usando a CLI do Azure DevOps e monitore o processamento e a saída de execução.
Observação
Este exemplo demonstra a funcionalidade da CLI do Azure DevOps com grupos de variáveis. Para aumentar a segurança, defina variáveis em grupos de variáveis na interface do usuário do Pipelines ou vincule um grupo de variáveis a segredos no Azure Key Vault.
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Início Rápido para Bash no Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para ver outras opções de entrada, confira Conectar-se com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
- Um repositório do GitHub com o Azure Pipelines foi instalado
- Um token de acesso pessoal (PAT) do GitHub para acesso
- Uma Organização do Azure DevOps com um PAT (token de acesso pessoal) para autenticação.
- Permissões de administrador de coleção de projetos na organização do Azure DevOps
Salvar o arquivo YAML do pipeline
Salve a seguinte definição de pipeline YAML como um arquivo chamado azure-pipelines.yml no diretório raiz e main
branch do repositório 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)
O script de exemplo
Esse exemplo executa as seguintes tarefas:
- Criar os recursos de DevOps
- Executar o pipeline
- Modificar os valores das variáveis três vezes
- Executar o pipeline novamente sempre que os valores das variáveis forem alterados
O script cria os seguintes recursos no Azure DevOps:
- Um projeto em sua organização de DevOps
- Uma conexão do serviço GitHub
- Um pipeline
- Um grupo de variáveis com duas variáveis não secretas e uma variável secreta
Antes de executar o script, substitua os seguintes espaços reservados da seguinte maneira:
<devops-organization>
Nome de sua organização do Azure DevOps<github-organization>
Sua organização ou nome de usuário do GitHub<github-repository>
Seu nome do repositório GitHub<pipelinename>
Um nome para o pipeline que tem entre 3 e 19 caracteres e contém apenas numerais e letras minúsculas. O script adiciona um identificador exclusivo de cinco dígitos.
Salve seu GitHub PAT em seu ambiente local.
AZURE_DEVOPS_EXT_GITHUB_PAT=<your-github-pat>
Depois de armazenar o arquivo YAML no GitHub, execute o seguinte script da CLI do Azure DevOps em um shell de Bash no Cloud Shell ou localmente.
#!/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:"
Limpar os recursos
Para evitar incorrer em encargos para o projeto do Azure, você pode excluir o projeto de exemplo, que também exclui seu recurso.
Copie o id
do projeto de exemplo da saída do seguinte comando:
az devops project list --org <your-organization>
Exclua o projeto executando o seguinte comando:
az devops project delete --id <project-id> --org <your-organization> --yes
Limpe seu ambiente local executando os seguintes comandos:
export AZURE_DEVOPS_EXT_GITHUB_PAT=""
az devops configure --defaults organization="" project=""
Referências da CLI do Azure
O exemplo neste artigo usa os seguintes comandos da CLI do 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