次の方法で共有


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

Azure DevOps Services

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

Note

この記事の手順では、Azure DevOps で認証し、Azure DevOps CLI 拡張機能を使用して az devops コマンドを実行する方法について説明します。 Azure CLI を使用して Azure リソースを操作する場合は、 AzureCLI タスクを使用します。

Azure DevOps で認証する

az devops configureaz devops -hなど、Azure DevOps を呼び出さない一部の Azure DevOps CLI コマンドでは認証は必要ありませんが、ほとんどのコマンドは Azure DevOps と対話し、認証を必要とします。 次の例に示すように、実行中のパイプラインで使用される System.AccessToken セキュリティ トークンを使用して、 AZURE_DEVOPS_EXT_PATという名前の環境変数に割り当てることで認証できます。

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

認証を必要とする複数の手順がある場合は、各ステップに AZURE_DEVOPS_EXT_PAT 環境変数を追加します。

実行中のパイプラインで使用されるセキュリティ トークンのスコープの詳細については、「 Access リポジトリ、成果物、およびその他のリソースを参照してください。

個人用アクセス トークンを使用した認証の詳細については、「 個人用アクセス トークン (PAT) でサインインする」を参照してください。

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

Microsoft がホストする Windows および Linux エージェントは、Azure CLI と Azure DevOps CLI 拡張機能で事前構成されています。

次の例は、Azure DevOps にログインし、いくつかのコマンドを実行する方法を示しています。 この例では、 ubuntu-latest Microsoft でホストされるエージェント イメージを使用しますが、他の 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 DevOps CLI 拡張機能を含む、Microsoft がホストするエージェントの付属ソフトウェアとそのバージョンを確認するには、Software 表のIncluded Software のリンクに従います。
  • 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 拡張機能を条件付きでインストールする

パイプラインが、Azure DevOps CLI 拡張機能がインストールされていない Microsoft でホストされている複数の VM イメージで実行されている場合は、条件付きでインストールを実行します。

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 拡張機能を構成する次の例には、次の前提条件があります。

# 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 という名前の変数グループの 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 コマンド出力を照会する方法を参照してください。