Azure Pipeline YAML 中的 Azure DevOps CLI

Azure DevOps Services

如果您想要搭配 YAML 管線使用 Azure DevOps CLI,您可以使用下列範例來瞭解如何使用 YAML 來安裝 Azure CLI、新增 Azure DevOps 擴充功能,以及執行 Azure DevOps CLI 命令。

注意

本文中的步驟說明如何使用 Azure DevOps CLI 擴充功能向 Azure DevOps 進行驗證,以及執行 az devops 命令。 如果您想要使用 Azure CLI 與 Azure 資源互動,請使用 AzureCLI 工作

使用 Azure DevOps 進行驗證

某些不會呼叫 Azure DevOps 的 Azure DevOps CLI 命令,例如 az devops configureaz devops -h,不需要任何驗證,但大部分的命令都會與 Azure DevOps 互動,而且需要驗證。 您可以使用執行管線所使用的 System.AccessToken 安全性令牌進行驗證,方法是將它指派給名為 AZURE_DEVOPS_EXT_PAT的環境變數,如下列範例所示。

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

如果您有多個需要驗證的步驟,請將 AZURE_DEVOPS_EXT_PAT 環境變數新增至每個步驟。

如需執行中管線所使用之安全性令牌範圍的詳細資訊,請參閱 存取存放庫、成品和其他資源

如需使用個人存取令牌進行驗證的詳細資訊,請參閱使用個人存取令牌登入(PAT)。

Azure DevOps CLI 搭配 Windows 和 Linux 裝載的代理程式

Microsoft 裝載的 Windows 和 Linux 代理程式會預先設定 Azure CLI 和 Azure DevOps CLI 擴充功能。

下列範例示範如何登入 Azure DevOps 並執行幾個命令。 此範例使用 Microsoft 裝載的 ubuntu-latest 代理程式映像,但您可以將它取代為任何其他 Windows 或 Linux 裝載的映像

此範例會使用執行管線所使用的 System.AccessToken 安全性令牌,向 Azure DevOps CLI 進行驗證。

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)

具有macOS託管代理程式的 Azure DevOps CLI

macOS Microsoft 裝載的代理程式已安裝 Azure CLI,但未安裝 Azure DevOps CLI 擴充功能。 若要安裝 Azure DevOps CLI 擴充功能,請在管線中執行下列命令,再呼叫任何 Azure DevOps CLI。

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

裝載的代理程式 Azure CLI 版本

Microsoft 裝載的 代理程式通常會將每周更新 部署到虛擬環境上的軟體。 對於某些工具,會使用部署時的最新版本;若為其他人,此工具會釘選到特定版本。。

  • 若要檢查隨附的軟體及其 Microsoft 裝載代理程式的版本,包括已安裝的 Azure CLI 和 Azure DevOps CLI 擴充功能版本,請遵循軟體數據表中的 Included Software 連結。
  • 若要檢查 Azure CLI 的目前版本,請參閱 如何安裝 Azure CLI

如果發行較新版本的 Azure CLI,且裝載的映射還沒有最新版本,您可以在管線中執行下列命令,將 Azure CLI 版本升級至最新版本。

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

# Update to latest Azure CLI version
- bash: pip install --pre azure-cli
  displayName: 'Upgrade Azure CLI'

有條件地安裝 Azure DevOps CLI 擴充功能

如果您有在數個 Microsoft 裝載的 VM 映射上執行的管線,其中某些映射未安裝 Azure DevOps CLI 擴充功能,您可以有條件地執行此步驟,如下列範例所示。

trigger:
- main

# Run on multiple Microsoft-hosted agent images
strategy:
  matrix:
    linux22:
      imageName: "ubuntu-22.04"
    linux20:
      imageName: "ubuntu-20.04"
    mac13:
      imageName: "macos-13"
    mac12:
      imageName: "macos-12"
    mac11:
      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

如果您的自我裝載代理程式未設定為使用 Azure DevOps CLI 所需的軟體,或如果您想要確定您有最新版本,您可以使用下列步驟來安裝必要的軟體。

手動安裝 Azure CLI 和 Azure DevOps CLI 擴充功能

當您為代理程式佈建虛擬機映射時,在自我裝載的代理程式上安裝 Azure CLI 和 Azure DevOps CLI 擴充功能比每次執行管線時安裝它們快得多。

在管線中安裝 Azure CLI 和 Azure DevOps CLI 擴充功能

下列使用管線在自我裝載代理程式上設定 Azure CLI 和 Azure DevOps CLI 擴充功能的範例具有下列必要條件。

  • 使用 Python 安裝 Azure CLI

    # 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
      displayName: 'Upgrade Azure CLI'
    
  • 安裝 Azure CLI DevOps 擴充功能

    • 已安裝 Azure CLI 2.10.1 版或更高版本。
    • 代理程式和路徑中已安裝的版本 bash 。 使用bash工作需要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
    # ...
    

下列範例會安裝 Azure CLI,後面接著 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
  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
# ...

將 Azure DevOps CLI 呼叫的結果指派給變數

若要儲存 Azure DevOps CLI 呼叫管線變數的結果,請使用task.setvariable在腳本中設定變數中所述的語法。 下列範例會擷取名為 Fabrikam-2023 的變數群組標識符,然後在後續步驟中使用此值。

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-2023 --query [].id -o tsv)"
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
  displayName: 'Get Fabrikam-2023 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-2023 variable group'

如需使用變數的更多範例,包括跨作業和階段使用變數,請參閱 定義變數。 如需上一個範例中使用的查詢語法範例,請參閱 如何使用 JMESPath 查詢查詢 Azure CLI 命令輸出。