Sdílet prostřednictvím


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 demostruje 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

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: