Azure パイプライン YAML の Azure DevOps CLI

Azure DevOps Services

YAML パイプラインで Azure DevOps CLI を使用する場合は、次の例を使用して、Azure CLI のインストール、Azure DevOps 拡張機能の追加、Azure DevOps CLI コマンドの実行に YAML を使用する方法を理解できます。

Note

この記事の手順では、Azure DevOps で認証し、Azure DevOps CLI 拡張機能を使用してコマンドを実行 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) を使用したサインイン」を参照してください

Windows および Linux でホストされるエージェントを使用した Azure DevOps CLI

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 がホストするエージェント は、通常、仮想環境上のソフトウェアに毎週更新プログラム をデプロイします。 一部のツールでは、デプロイ時の最新バージョンが使用されます。その他の場合、ツールは特定のバージョンにピン留めされます。

新しいバージョンの 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 拡張機能をインストールする

    # 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 という名前の変数グループの ID を取得し、その後の手順でこの値を使用します。

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 コマンド出力にクエリを実行する方法」を参照してください