Bagikan melalui


Mengelola variabel dalam grup variabel dengan Azure DevOps CLI

Azure DevOps

Mengelola variabel di Azure Pipelines sangat penting untuk menjaga fleksibilitas dan keamanan dalam alur kerja CI/CD Anda. Panduan ini menunjukkan cara menggunakan Azure DevOps CLI untuk membuat dan mengelola variabel rahasia dan nonsecret dalam grup variabel Azure Pipelines. Dengan menggunakan grup variabel, Anda dapat mempusatkan manajemen variabel dan memastikan bahwa informasi sensitif ditangani dengan aman.

Dengan sampel dalam panduan ini, Anda mempelajari cara:

  • Tentukan alur Azure Pipelines menggunakan file YAML yang disimpan di GitHub.
  • Buat grup variabel yang berisi variabel rahasia dan nonsecret.
  • Jalankan alur menggunakan Azure DevOps CLI dan pantau pemrosesan dan output eksekusi.

Catatan

Sampel ini menurunkan fungsionalitas Azure DevOps CLI dengan grup variabel. Untuk peningkatan keamanan, tentukan variabel dalam grup variabel di UI Alur atau tautkan grup variabel ke rahasia di Azure Key Vault.

Prasyarat

Simpan file YAML Alur

Simpan definisi alur YAML berikut sebagai file yang disebut azure-pipelines.yml di direktori akar dan main cabang repositori GitHub Anda.

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)

Contoh skrip

Sampel ini melakukan tugas-tugas berikut:

  • Membuat sumber daya DevOps
  • Menjalankan alur
  • Mengubah nilai variabel tiga kali
  • Jalankan alur lagi setiap kali nilai variabel diubah

Skrip membuat sumber daya berikut di Azure DevOps:

  • Proyek di organisasi DevOps Anda
  • Koneksi layanan GitHub
  • Sebuah alur
  • Grup variabel dengan dua variabel nonsecret dan satu variabel rahasia

Sebelum Anda menjalankan skrip, ganti tempat penampung berikut sebagai berikut:

  • <devops-organization> Nama organisasi Azure DevOps Anda
  • <github-organization> Organisasi GitHub atau nama pengguna Anda
  • <github-repository> Nama repositori GitHub Anda
  • <pipelinename> Nama untuk alur yang berjarak antara 3-19 karakter dan hanya berisi angka dan huruf kecil. Skrip menambahkan pengidentifikasi unik lima digit.

Simpan Pat GitHub Anda di lingkungan lokal Anda.

AZURE_DEVOPS_EXT_GITHUB_PAT=<your-github-pat>

Setelah Anda menyimpan file YAML di GitHub, jalankan skrip Azure DevOps CLI berikut di shell Bash di Cloud Shell atau secara lokal.

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

Membersihkan sumber daya

Untuk menghindari dikenakan biaya untuk proyek Azure, Anda dapat menghapus proyek sampel, yang juga menghapus sumber dayanya.

id Salin proyek sampel dari output perintah berikut:

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

Hapus proyek dengan menjalankan perintah berikut:

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

Bersihkan lingkungan lokal Anda dengan menjalankan perintah berikut:

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

Referensi Azure CLI

Sampel dalam artikel ini menggunakan perintah Azure CLI berikut: