Správa proměnných ve skupinách proměnných pomocí Azure DevOps CLI
Služby Azure DevOps
Správa proměnných ve službě Azure Pipelines je zásadní pro zachování flexibility a zabezpečení pracovních postupů CI/CD. Tento průvodce ukazuje, jak pomocí Azure DevOps CLI vytvářet a spravovat tajné i nezabezpečené proměnné v rámci skupiny proměnných Azure Pipelines. Pomocí skupin proměnných můžete centralizovat správu proměnných a zajistit bezpečné zpracování citlivých informací.
S ukázkou v této příručce se naučíte:
- Definujte kanál Azure Pipelines pomocí souboru YAML uloženého na GitHubu.
- Vytvořte skupinu proměnných obsahující tajné i nezabezpečené proměnné.
- Spusťte kanál pomocí Azure DevOps CLI a monitorujte zpracování a výstup spuštění.
Poznámka:
Tato ukázka ukazuje funkce Azure DevOps CLI se skupinami proměnných. Pokud chcete zvýšit zabezpečení, definujte proměnné ve skupinách proměnných v uživatelském rozhraní Pipelines nebo propojte skupinu proměnných s tajnými kódy ve službě Azure Key Vault.
Požadavky
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
- Úložiště GitHub s nainstalovanými službami Azure Pipelines
- Osobní přístupový token (PAT) GitHubu pro přístup
- Organizace Azure DevOps s osobním přístupovým tokenem (PAT) pro ověřování
- Oprávnění správce kolekce projektů v organizaci Azure DevOps
Uložení souboru YAML kanálu
Uložte následující definici kanálu YAML jako soubor s názvem azure-pipelines.yml v kořenovém adresáři a main
větvi úložiště 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)
Ukázkový skript
Tato ukázka provede následující úlohy:
- Vytvoření prostředků DevOps
- Spuštění kanálu
- Třikrát upravte hodnoty proměnných.
- Znovu spusťte kanál při každé změně hodnot proměnných.
Skript vytvoří v Azure DevOps následující prostředky:
- Projekt ve vaší organizaci DevOps
- Připojení ke službě GitHub
- Kanál
- Skupina proměnných se dvěma nesekretovými proměnnými a jednou tajnou proměnnou
Před spuštěním skriptu nahraďte následující zástupné symboly následujícím způsobem:
<devops-organization>
Název vaší organizace Azure DevOps<github-organization>
Vaše organizace nebo uživatelské jméno GitHubu<github-repository>
Název úložiště GitHub<pipelinename>
Název kanálu, který je mezi 3 až 19 znaky a obsahuje pouze číslice a malá písmena. Skript přidá pětimístný jedinečný identifikátor.
Uložte pat GitHubu do místního prostředí.
AZURE_DEVOPS_EXT_GITHUB_PAT=<your-github-pat>
Po uložení souboru YAML na GitHubu spusťte následující skript Azure DevOps CLI v prostředí Bash v Cloud Shellu nebo místně.
#!/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:"
Vyčištění prostředků
Abyste se vyhnuli poplatkům za projekt Azure, můžete odstranit ukázkový projekt, který také odstraní jeho prostředek.
id
Zkopírujte ukázkový projekt z výstupu následujícího příkazu:
az devops project list --org <your-organization>
Odstraňte projekt spuštěním následujícího příkazu:
az devops project delete --id <project-id> --org <your-organization> --yes
Vyčistíte místní prostředí spuštěním následujících příkazů:
export AZURE_DEVOPS_EXT_GITHUB_PAT=""
az devops configure --defaults organization="" project=""
Referenční informace k Azure CLI
Ukázka v tomto článku používá následující příkazy Azure CLI:
- 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-group variable update