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 configureやaz 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 のインストールを参照してください。 Windows、Linux、および 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 コマンド出力を照会する方法を参照してください。