Azure DevOps CLI ile değişken gruplarındaki değişkenleri yönetme

Azure DevOps Services

Azure Pipelines'da değişkenleri yönetmek, CI/CD iş akışlarınızda esnekliği ve güvenliği korumak için çok önemlidir. Bu kılavuzda, Azure Pipelines değişken grubu içinde hem gizli hem de güvenli olmayan değişkenler oluşturmak ve yönetmek için Azure DevOps CLI'nin nasıl kullanılacağı gösterilmektedir. Değişken gruplarını kullanarak değişkenlerin yönetimini merkezileştirebilir ve hassas bilgilerin güvenli bir şekilde işlendiğinden emin olabilirsiniz.

Bu kılavuzdaki örnekle şunların nasıl yapılacağını öğreneceksiniz:

  • GitHub'da depolanan bir YAML dosyasını kullanarak Azure Pipelines işlem hattı tanımlayın.
  • Hem gizli dizi hem de güvenli olmayan değişkenleri içeren bir değişken grubu oluşturun.
  • Azure DevOps CLI kullanarak işlem hattını yürüterek çalıştırma işlemini ve çıkışını izleyin.

Not

Bu örnek, Azure DevOps CLI'nin değişken gruplarıyla işlevselliğini gösterir. Daha fazla güvenlik için İşlem Hatları kullanıcı arabirimindeki değişken gruplarında değişkenleri tanımlayın veya Azure Key Vault'taki gizli dizilere bir değişken grubu bağlayın.

Önkoşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

İşlem Hattı YAML dosyasını kaydetme

Aşağıdaki YAML işlem hattı tanımını GitHub deponuzun kök dizinine ve main dalında azure-pipelines.yml adlı bir dosya olarak kaydedin.

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)

Örnek betik

Bu örnek aşağıdaki görevleri yapar:

  • DevOps kaynaklarını oluşturma
  • İşlem hattını çalıştırma
  • Değişken değerlerini üç kez değiştirme
  • Değişken değerleri her değiştirildiğinde işlem hattını yeniden çalıştırın

Betik, Azure DevOps'ta aşağıdaki kaynakları oluşturur:

  • DevOps kuruluşunuzdaki bir proje
  • GitHub hizmet bağlantısı
  • İşlem hattı
  • İki nonsecret değişkeni ve bir gizli değişken içeren değişken grubu

Betiği çalıştırmadan önce aşağıdaki yer tutucuları aşağıdaki gibi değiştirin:

  • <devops-organization> Azure DevOps kuruluşunuzun adı
  • <github-organization> GitHub kuruluşunuz veya kullanıcı adınız
  • <github-repository> GitHub deponuzun adı
  • <pipelinename> İşlem hattı için 3-19 karakter arasında olan ve yalnızca rakam ve küçük harf içeren bir ad. Betik beş basamaklı benzersiz bir tanımlayıcı ekler.

GitHub PAT'nizi yerel ortamınıza kaydedin.

AZURE_DEVOPS_EXT_GITHUB_PAT=<your-github-pat>

YAML dosyasını GitHub'da depoladıktan sonra aşağıdaki Azure DevOps CLI betiğini Cloud Shell'deki bir Bash kabuğunda veya yerel olarak çalıştırın.

#!/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:"

Kaynakları temizleme

Azure projesi için ücret yansıtılmasını önlemek için örnek projeyi silebilirsiniz ve bu proje kaynağını da siler.

id Aşağıdaki komutun çıktısından örnek projenin değerini kopyalayın:

az devops project list --org <your-organization>

Aşağıdaki komutu çalıştırarak projeyi silin:

az devops project delete --id <project-id> --org <your-organization> --yes

Aşağıdaki komutları çalıştırarak yerel ortamınızı temizleyin:

export AZURE_DEVOPS_EXT_GITHUB_PAT=""
az devops configure --defaults organization="" project=""

Azure CLI başvuruları

Bu makaledeki örnekte aşağıdaki Azure CLI komutları kullanılmaktadır: