次の方法で共有


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

Azure DevOps Services

YAML パイプラインで Azure DevOps CLI を使用する場合は、Azure DevOps 拡張機能を使用するか、 AzureCLI タスクを使用できます。 Microsoft がホストする Windows および Linux エージェントは、Azure CLI と Azure DevOps CLI 拡張機能で事前構成されています。 Azure DevOps CLI 拡張機能は、 az devops コマンドを実行します。

PAT を使用して認証することも、サービス接続で AzureCLI@2 タスク を使用することもできます。 資格情報を手動で管理する必要がないため、サービス接続を使用する方が安全なオプションです。

Azure DevOps で認証する

az devops configureaz devops --helpなど、一部の Azure DevOps CLI コマンドでは認証は必要ありません。 Azure DevOps に接続しません。 ほとんどのコマンドは Azure DevOps と対話し、認証が必要です。

次の例に示すように、実行中のパイプラインで使用される System.AccessToken セキュリティ トークンを使用して、 AZURE_DEVOPS_EXT_PATという名前の環境変数に割り当てることで認証できます。

System.AccessTokenを使用するには、PAT が必要です。 より安全な代替手段として、AzureCLI@2 タスクを使用してサービス接続を設定できます。

- 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 でホストされているイメージに置き換えることができます。

この例では、Azure DevOps CLI を使用して認証します。 実行中のパイプラインで使用される System.AccessToken セキュリティ トークンを使用します。

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 拡張機能を条件付きでインストールする

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

trigger:
- main

# Run on multiple Microsoft-hosted agent images
strategy:
  matrix:
    linux24:
      imageName: "ubuntu-24.04"
    linux22:
      imageName: "ubuntu-22.04"
    mac15:
      imageName: "macos-15"
    mac14:
      imageName: "macos-14"
    mac13:
      imageName: "macos-13"
    windows2025:
      imageName: "windows-2025"
    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 CLI のインストールを参照してください。 WindowsLinux、および macOS に関する個別の手順があります。

Azure CLI をインストールしたら、 Azure DevOps CLI 拡張機能をインストールします。

パイプラインに Azure CLI と Azure DevOps CLI 拡張機能をインストールする

パイプラインを使用してセルフホステッド エージェントで Azure CLI と Azure DevOps CLI 拡張機能を構成する次の例には、次の前提条件があります。

  • Python を使用して Azure CLI をインストールします。 Python バージョン タスクの手順に従って、エージェントに Python をインストールする必要があります。このタスクを使用するようにセルフホステッド エージェントを構成するにはどうすればよいですか? UsePythonVersion@0 タスクは、セルフホステッド エージェントに Python をインストールしません。 セルフホステッド エージェントにインストールされている Python のバージョンが 1 つだけで、パス内にある場合は、 UsePythonVersion@0 タスクを使用する必要はありません。
# 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'

サービス接続で認証する

サービス接続を使用すると、サービス接続は、パイプラインで手動で資格情報を管理することなく、AzureCLI@2 タスクで Azure CLI コマンドと Azure DevOps CLI コマンドに必要な資格情報を提供します。

Note

AzureCLI@2での認証にサービス接続を使用する場合は、Azure DevOps 組織にサービス プリンシパルを手動で追加する必要があります

このコード サンプルでは、既存のサービス接続の名前を使用して、 serviceConnection新しいパラメーターを定義します。 このパラメーターは、 AzureCLI@2 タスクで参照されます。 タスクには、すべてのプロジェクト (az devops project list) とプール (az pipelines pool list) が一覧表示されます。

trigger:
  - main

parameters:
- name: serviceConnection
  displayName: Azure Service Connection Name
  type: string
  default: my-service-connection

steps:
  - task: AzureCLI@2
    condition: succeededOrFailed()
    displayName: 'Azure CLI -> DevOps CLI'
    inputs:
      azureSubscription: '${{ parameters.serviceConnection }}'
      scriptType: pscore
      scriptLocation: inlineScript
      inlineScript: |
        Write-Host "Using logged-in Azure CLI session..."
        Write-Host "$($PSStyle.Formatting.FormatAccent)az devops configure$($PSStyle.Reset)"
        az devops configure --defaults organization=$(System.CollectionUri) project=$(System.TeamProject)
        az devops configure -l

        Write-Host "`nUse Azure DevOps CLI (az devops) to list projects in the organization '$(System.CollectionUri)'..."
        Write-Host "$($PSStyle.Formatting.FormatAccent)az devops project list$($PSStyle.Reset)"
        az devops project list --query "value[].{Name:name, Id:id}" `
                               -o table

        Write-Host "`nUse Azure DevOps CLI (az pipelines) to list pools in the organization '$(System.CollectionUri)'..."
        Write-Host "$($PSStyle.Formatting.FormatAccent)az pipelines pool list$($PSStyle.Reset)"
        az pipelines pool list --query "[].{Id:id, Name:name}" `
                               -o table
      failOnStandardError: true

Azure DevOps CLI 呼び出しの結果を変数に割り当てる

Azure DevOps CLI 呼び出しの結果をパイプライン変数に格納するには、「スクリプト内の変数の設定task.setvariableで説明されている構文を使用します。 次の例では、 kubernetes という名前の変数グループの ID を取得し、後続の手順でこの値を使用します。

trigger:
  - main

variables:
- name: variableGroupId

parameters:
- name: serviceConnection
  displayName: Azure Service Connection Name
  type: string
  default: my-service-connection

steps:
  - task: AzureCLI@2
    condition: succeededOrFailed()
    displayName: 'Azure CLI -> DevOps CLI'
    inputs:
      azureSubscription: '${{ parameters.serviceConnection }}'
      scriptType: pscore
      scriptLocation: inlineScript
      inlineScript: |
        Write-Host "Using logged-in Azure CLI session..."
        Write-Host "$($PSStyle.Formatting.FormatAccent)az devops configure$($PSStyle.Reset)"
        az devops configure --defaults organization=$(System.CollectionUri) project=$(System.TeamProject)
        az devops configure -l

        $id = az pipelines variable-group list --group-name kubernetes --query [].id -o tsv
        Write-Host "##vso[task.setvariable variable=variableGroupId]$id"

  - task: AzureCLI@2
    condition: succeededOrFailed()
    displayName: 'Azure CLI -> DevOps CLI'
    inputs:
      azureSubscription: '${{ parameters.serviceConnection }}'
      scriptType: pscore
      scriptLocation: inlineScript
      inlineScript: |
        Write-Host "Using logged-in Azure CLI session..."
        az pipelines variable-group variable list --group-id '$(variableGroupId)'

ジョブやステージ間での変数の操作など、変数を操作する例については、「変数の定義を参照してください。 前の例で使用したクエリ構文の例については、「 JMESPath クエリを使用して Azure CLI コマンド出力を照会する方法を参照してください。