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
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.
- Repositori GitHub dengan Azure Pipelines terinstal
- Token akses pribadi GitHub (PAT) untuk akses
- Organisasi Azure DevOps dengan token akses pribadi (PAT) untuk autentikasi
- Izin Administrator Koleksi Proyek di organisasi Azure DevOps
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:
- 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 variabel-group variable create
- az pipelines variable-group variable update