Zarządzanie zmiennymi w grupach zmiennych za pomocą interfejsu wiersza polecenia usługi Azure DevOps
Azure DevOps Services
Zarządzanie zmiennymi w Azure Pipelines jest kluczowe dla zachowania elastyczności i bezpieczeństwa w procesach CI/CD. W tym przewodniku pokazano, jak używać Azure DevOps CLI do tworzenia i zarządzania zarówno tajnymi, jak i nietajnymi zmiennymi w grupie zmiennych usługi Azure Pipelines. Korzystając z grup zmiennych, można centralizować zarządzanie zmiennymi i zapewnić bezpieczne obsługę poufnych informacji.
Z przykładu w tym przewodniku dowiesz się, jak wykonywać następujące działania:
- Zdefiniuj rurociąg Azure Pipelines za pomocą pliku YAML przechowywanego w GitHub.
- Utwórz grupę zmiennych zawierającą zarówno zmienne tajne, jak i niesekret.
- Wykonaj potok przy użyciu interfejsu wiersza polecenia usługi Azure DevOps i monitoruj przetwarzanie i dane wyjściowe przebiegu.
Uwaga
W tym przykładzie przedstawiono funkcjonalność interfejsu wiersza polecenia usługi Azure DevOps z grupami zmiennych. Aby zwiększyć bezpieczeństwo, zdefiniuj zmienne w grupach zmiennych w interfejsie użytkownika potoków lub połącz grupę zmiennych z tajnymi w usłudze Azure Key Vault.
Wymagania wstępne
Użyj środowiska Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Gdy zostaniesz o to poproszony, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
- Repozytorium GitHub z zainstalowaną usługą Azure Pipelines
- Osobisty token dostępu w usłudze GitHub
- Organizacja usługi Azure DevOps z osobistym tokenem dostępu (PAT) na potrzeby uwierzytelniania
- Uprawnienia administratora kolekcji projektów w organizacji usługi Azure DevOps
Zapisz plik potoku YAML
Zapisz następującą definicję potoku YAML jako plik o nazwie azure-pipelines.yml w katalogu głównym oraz w odpowiedniej gałęzi swojego repozytorium 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)
Przykładowy skrypt
Ten przykład wykonuje następujące zadania:
- Tworzenie zasobów metodyki DevOps
- Uruchamianie potoku
- Modyfikowanie wartości zmiennych trzy razy
- Ponownie uruchom potok za każdym razem, gdy wartości zmiennych są zmieniane
Skrypt tworzy następujące zasoby w usłudze Azure DevOps:
- Projekt w organizacji DevOps
- Połączenie usługi GitHub
- Potok
- Grupa zmiennych z dwiema zmiennymi niesekretowymi i jedną zmienną wpisu tajnego
Przed uruchomieniem skryptu zastąp następujące symbole zastępcze w następujący sposób:
-
<devops-organization>
Nazwa organizacji usługi Azure DevOps -
<github-organization>
Twoja organizacja lub nazwa użytkownika usługi GitHub -
<github-repository>
Nazwa repozytorium GitHub -
<pipelinename>
Nazwa przepływu, która ma od 3 do 19 znaków i zawiera wyłącznie cyfry oraz małe litery. Skrypt dodaje pięciocyfrowy unikatowy identyfikator.
Zapisz identyfikator PAT usługi GitHub w środowisku lokalnym.
AZURE_DEVOPS_EXT_GITHUB_PAT=<your-github-pat>
Po zapisaniu pliku YAML w GitHub uruchom następujący skrypt Azure DevOps CLI w powłoce Bash, w Cloud Shell lub lokalnie.
#!/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:"
Czyszczenie zasobów
Aby uniknąć naliczania opłat za projekt platformy Azure, możesz usunąć przykładowy projekt, który również usuwa jego zasób.
Skopiuj id
przykładowego projektu z danych wyjściowych następującego polecenia:
az devops project list --org <your-organization>
Usuń projekt, uruchamiając następujące polecenie:
az devops project delete --id <project-id> --org <your-organization> --yes
Wyczyść środowisko lokalne, uruchamiając następujące polecenia:
export AZURE_DEVOPS_EXT_GITHUB_PAT=""
az devops configure --defaults organization="" project=""
Odniesienia do Azure CLI
W przykładzie w tym artykule są używane następujące polecenia interfejsu wiersza polecenia platformy Azure:
- az devops configure
- az devops project create
- az devops project delete
- az devops usuń projekt
- 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