Azure DevOps CLI di Azure Pipeline YAML

Azure DevOps

Jika Anda ingin menggunakan Azure DevOps CLI dengan alur YAML, Anda dapat menggunakan contoh berikut untuk memahami bagaimana YAML dapat digunakan untuk menginstal Azure CLI, menambahkan ekstensi Azure DevOps, dan menjalankan perintah Azure DevOps CLI.

Catatan

Langkah-langkah dalam artikel ini menunjukkan cara mengautentikasi dengan Azure DevOps dan menjalankan az devops perintah menggunakan ekstensi Azure DevOps CLI. Jika Anda ingin menggunakan Azure CLI untuk berinteraksi dengan sumber daya Azure, gunakan tugas AzureCLI.

Mengautentikasi dengan Azure DevOps

Beberapa perintah Azure DevOps CLI yang tidak memanggil Azure DevOps, seperti az devops configure dan az devops -h, tidak memerlukan autentikasi apa pun, tetapi sebagian besar perintah berinteraksi dengan Azure DevOps dan memerlukan autentikasi. Anda dapat mengautentikasi menggunakan token keamanan System.AccessToken yang digunakan oleh alur yang sedang berjalan, dengan menetapkannya ke variabel lingkungan bernama AZURE_DEVOPS_EXT_PAT, seperti yang ditunjukkan dalam contoh berikut.

- bash: |
    az pipelines build list
  displayName: 'Show build list'
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)

Jika Anda memiliki beberapa langkah yang memerlukan autentikasi, tambahkan AZURE_DEVOPS_EXT_PAT variabel lingkungan ke setiap langkah.

Untuk informasi selengkapnya tentang cakupan token keamanan yang digunakan oleh alur yang sedang berjalan, lihat Repositori akses, artefak, dan sumber daya lainnya.

Untuk informasi selengkapnya tentang autentikasi menggunakan token akses pribadi, lihat Masuk dengan token akses pribadi (PAT).

Azure DevOps CLI dengan agen yang dihosting Windows dan Linux

Agen Windows dan Linux yang dihosting Microsoft telah dikonfigurasi sebelumnya dengan Azure CLI dan ekstensi Azure DevOps CLI.

Contoh berikut menunjukkan cara masuk ke Azure DevOps dan menjalankan beberapa perintah. Contoh ini menggunakan ubuntu-latest gambar agen yang dihosting Microsoft, tetapi Anda dapat menggantinya dengan salah satu gambar yang dihosting Windows atau Linux lainnya.

Contoh ini mengautentikasi dengan Azure DevOps CLI menggunakan token keamanan System.AccessToken yang digunakan oleh alur yang sedang berjalan.

trigger:
- main

pool:
  vmImage: `ubuntu-latest`

steps:
- bash: az --version
  displayName: 'Show Azure CLI version'

- bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) --use-git-aliases true
  displayName: 'Set default Azure DevOps organization and project'

- bash: |
    az pipelines build list
    git pr list
  displayName: 'Show build list and PRs'
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)

Azure DevOps CLI dengan agen yang dihosting macOS

Agen yang dihosting Microsoft macOS telah menginstal Azure CLI tetapi bukan ekstensi Azure DevOps CLI. Untuk menginstal ekstensi Azure DevOps CLI, jalankan perintah berikut di alur Anda sebelum melakukan panggilan CLI Azure DevOps.

# Install Azure DevOps extension
- bash: az extension add -n azure-devops
  displayName: 'Install Azure DevOps extension'

Versi Azure CLI agen yang dihosting

Agen yang dihosting Microsoft biasanya menyebarkan pembaruan mingguan ke perangkat lunak di lingkungan virtual. Untuk beberapa alat, versi terbaru pada saat penyebaran digunakan; untuk yang lain, alat ini disematkan ke versi tertentu.

  • Untuk memeriksa perangkat lunak yang disertakan dan versinya untuk agen yang dihosting Microsoft, termasuk versi ekstensi Azure CLI dan Azure DevOps CLI yang diinstal, ikuti tautan Perangkat Lunak yang Disertakan dalam tabel Perangkat Lunak .
  • Untuk memeriksa versi saat ini untuk Azure CLI, lihat Cara menginstal Azure CLI.

Jika versi Azure CLI yang lebih baru dirilis dan gambar yang dihosting belum memiliki versi terbaru, Anda dapat meningkatkan versi Azure CLI ke versi terbaru dengan menjalankan perintah berikut di alur Anda.

# Specify python version
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    architecture: 'x64'

# Update to latest Azure CLI version
- bash: pip install --pre azure-cli --extra-index-url https://azurecliprod.blob.core.windows.net/edge
  displayName: 'Upgrade Azure CLI'

Menginstal ekstensi Azure DevOps CLI secara bersyarah

Jika Anda memiliki alur yang berjalan pada beberapa gambar VM yang dihosting Microsoft, beberapa di antaranya tidak menginstal ekstensi Azure DevOps CLI, Anda dapat melakukan langkah tersebut secara kondisional, seperti yang ditunjukkan dalam contoh berikut.

trigger:
- main

# Run on multiple Microsoft-hosted agent images
strategy:
  matrix:
    linux18:
      imageName: "ubuntu-18.04"
    linux20:
      imageName: "ubuntu-20.04"
    mac1015:
      imageName: "macos-10.15"
    macOS11:
      imageName: "macos-11"
    windows2019:
      imageName: "windows-2019"
    windows2022:
      imageName: "windows-2022"
  maxParallel: 3

pool:
  vmImage: $(imageName)

steps:
- bash: az --version
  displayName: 'Show Azure CLI version'

# Install Azure DevOps CLI extension only on macOS images
- bash: az extension add -n azure-devops
  condition: contains(variables.imageName, 'mac')
  displayName: 'Install Azure DevOps extension'

# Azure DevOps CLI extension call that does not require login or credentials
# since it configures the local environment
- bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) --use-git-aliases true
  displayName: 'Set default Azure DevOps organization and project'

# Call that does require credentials, use the System.AccessToken PAT
# and assign to AZURE_DEVOPS_EXT_PAT which is known to Azure DevOps CLI extension
- bash: |
    az pipelines build list
    git pr list
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
  displayName: 'Show build list and PRs'

Azure DevOps CLI dengan agen yang dihost sendiri

Jika agen yang dihost sendiri tidak dikonfigurasi dengan perangkat lunak yang diperlukan untuk menggunakan Azure DevOps CLI, atau jika Anda ingin memastikan Anda memiliki versi terbaru, Anda dapat menginstal perangkat lunak yang diperlukan menggunakan langkah-langkah berikut.

Menginstal ekstensi Azure CLI dan Azure DevOps CLI secara manual

Menginstal ekstensi Azure CLI dan Azure DevOps CLI pada agen yang dihost sendiri saat Anda menyediakan gambar komputer virtual untuk agen jauh lebih cepat daripada menginstalnya setiap kali alur dijalankan.

Menginstal ekstensi Azure CLI dan Azure DevOps CLI di alur Anda

Contoh berikut mengonfigurasi ekstensi Azure CLI dan Azure DevOps CLI pada agen yang dihost sendiri menggunakan alur memiliki prasyarat berikut.

  • Menginstal Azure CLI menggunakan Python

    # Specify python version if you have side-by-side versions
    - task: UsePythonVersion@0
      inputs:
        versionSpec: '3.x'
        architecture: 'x64'
    
    # Update pip to latest
    - bash: python -m pip install --upgrade pip
      displayName: 'Upgrade pip'
    
    # Update to latest Azure CLI version, min version required for Azure DevOps is 2.10.1
    - bash: pip install --pre azure-cli --extra-index-url https://azurecliprod.blob.core.windows.net/edge
      displayName: 'Upgrade Azure CLI'
    
  • Menginstal ekstensi Azure CLI DevOps

    • Azure CLI versi 2.10.1 atau yang lebih tinggi diinstal.
    • Ada versi yang bash diinstal pada agen dan di jalur. Penginstalan bash diperlukan untuk menggunakan tugas bash.
    # Install Azure DevOps extension
    - bash: az extension add -n azure-devops
      displayName: 'Install Azure DevOps extension'
    
    # Now you can make calls into Azure DevOps CLI
    # ...
    

Contoh berikut menginstal Azure CLI diikuti oleh ekstensi Azure DevOps CLI.

steps:
# Specify python version if you have side-by-side versions
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    architecture: 'x64'

# Update pip to latest
- bash: python -m pip install --upgrade pip
  displayName: 'Upgrade pip'

# Update to latest Azure CLI version, min version required for Azure DevOps is 2.10.1
- bash: pip install --pre azure-cli --extra-index-url https://azurecliprod.blob.core.windows.net/edge
  displayName: 'Upgrade Azure CLI'

# Install Azure DevOps extension
- bash: az extension add -n azure-devops
  displayName: 'Install Azure DevOps extension'

# Now you can make calls into Azure DevOps CLI
# ...

Menetapkan hasil panggilan Azure DevOps CLI ke variabel

Untuk menyimpan hasil panggilan Azure DevOps CLI ke variabel alur, gunakan sintaks yang task.setvariable dijelaskan dalam Mengatur variabel dalam skrip. Contoh berikut mengambil ID grup variabel bernama Fabrikam-2021 lalu menggunakan nilai ini dalam langkah berikutnya.

variables:
- name: variableGroupId

trigger: none

pool:
  vmImage: "ubuntu-latest"

steps:
- bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) --use-git-aliases true
  displayName: 'Set default Azure DevOps organization and project'

- bash: echo "##vso[task.setvariable variable=variableGroupId]$(az pipelines variable-group list --group-name Fabrikam-2021 --query [].id -o tsv)"
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
  displayName: 'Get Fabrikam-2021 variable group id'

- bash: az pipelines variable-group variable list --group-id $(variableGroupId)
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
  displayName: 'List variables in Fabrikam-2021 variable group'

Untuk contoh selengkapnya tentang bekerja dengan variabel, termasuk bekerja dengan variabel di seluruh pekerjaan dan tahapan, lihat Menentukan variabel. Untuk contoh sintaks kueri yang digunakan dalam contoh sebelumnya, lihat Cara mengkueri output perintah Azure CLI menggunakan kueri JMESPath.