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 configure
やaz 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 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
タスクを使用する必要はありません。
- Python は、Python バージョン タスクの手順に従ってエージェントにインストールする必要があります。このタスクを使用するようにセルフホステッド エージェントを構成するにはどうすればよいですか?
# 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 コマンド出力を照会する方法を参照してください。