Azure DevOps CLI in Azure-Pipeline-YAML
Azure DevOps Services
Wenn Sie Azure DevOps CLI mit einer YAML-Pipeline verwenden möchten, können Sie die folgenden Beispiele verwenden, um Azure CLI zu installieren, die Azure DevOps-Erweiterung hinzuzufügen und Azure DevOps CLI-Befehle auszuführen.
Hinweis
Die Schritte in diesem Artikel zeigen, wie Sie sich bei Azure DevOps authentifizieren und Befehle mithilfe der Azure DevOps CLI-Erweiterung ausführen az devops
. Wenn Sie Azure CLI für die Interaktion mit Azure-Ressourcen verwenden möchten, verwenden Sie die AzureCLI-Aufgabe.
Authentifizieren mit Azure DevOps
Einige Azure DevOps CLI-Befehle, die sich nicht in Azure DevOps aufrufen, z az devops configure
. B. und az devops -h
, erfordern keine Authentifizierung, aber die meisten Befehle interagieren mit Azure DevOps und erfordern Authentifizierung. Sie können sich mithilfe des von der ausgeführten Pipeline verwendeten Sicherheitstokens System.AccessToken authentifizieren , indem Sie es einer Umgebungsvariable namens AZURE_DEVOPS_EXT_PAT
zuweisen, wie im folgenden Beispiel gezeigt.
- bash: |
az pipelines build list --organization '$(System.TeamFoundationCollectionUri)' --project '$(System.TeamProject)'
displayName: 'Show build list'
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
Wenn Sie über mehrere Schritte verfügen, die eine Authentifizierung erfordern, fügen Sie die AZURE_DEVOPS_EXT_PAT
Umgebungsvariable zu jedem Schritt hinzu.
Weitere Informationen zum Umfang des von der ausgeführten Pipeline verwendeten Sicherheitstokens finden Sie unter Access-Repositorys, Artefakte und andere Ressourcen.
Weitere Informationen zur Authentifizierung mithilfe eines persönlichen Zugriffstokens finden Sie unter Anmelden mit einem persönlichen Zugriffstoken (PAT).
Azure DevOps CLI mit von Windows und Linux gehosteten Agents
Die von Microsoft gehosteten Windows- und Linux-Agents sind mit Azure CLI und der Azure DevOps CLI-Erweiterung vorkonfiguriert.
Das folgende Beispiel zeigt, wie Sie sich bei Azure DevOps anmelden und einige Befehle ausführen. In diesem Beispiel wird das ubuntu-latest
von Microsoft gehostete Agent-Image verwendet, Sie können es jedoch durch eines der anderen von Windows oder Linux gehosteten Images ersetzen.
In diesem Beispiel wird die Azure DevOps CLI mithilfe des von der ausgeführten Pipeline verwendeten Sicherheitstokens System.AccessToken authentifiziert.
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)
Azure DevOps CLI mit macOS gehosteten Agents
Die von Microsoft gehosteten macOS-Agents haben Azure CLI installiert, aber nicht die Azure DevOps CLI-Erweiterung. Um die Azure DevOps CLI-Erweiterung zu installieren, führen Sie den folgenden Befehl in Ihrer Pipeline aus, bevor Sie Azure DevOps CLI-Aufrufe ausführen.
# Install Azure DevOps extension
- bash: az extension add -n azure-devops
displayName: 'Install Azure DevOps extension'
Azure CLI-Version des gehosteten Agents
Von Microsoft gehostete Agents stellen in der Regel wöchentliche Updates für die Software in den virtuellen Umgebungen bereit. Bei einigen Tools wird die neueste Version zum Zeitpunkt der Bereitstellung verwendet; für andere wird das Tool an bestimmte Versionen angeheftet.
- Um die enthaltene Software und ihre Versionen für von Microsoft gehostete Agents zu überprüfen, einschließlich der installierten Version der Azure CLI- und Azure DevOps CLI-Erweiterung, folgen Sie den Links "Enthaltene Software" in der Tabelle "Software".
- Informationen zum Überprüfen der aktuellen Version für Azure CLI finden Sie unter Installieren der Azure CLI.
Sie können die Azure CLI auf Ihren gehosteten Images aktualisieren, indem Sie die folgenden Befehle in Ihrer Pipeline ausführen.
# 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'
Bedingtes Installieren der Azure DevOps CLI-Erweiterung
Wenn Ihre Pipeline auf mehreren von Microsoft gehosteten VM-Images ausgeführt wird, von denen einige die Azure DevOps CLI-Erweiterung nicht installiert haben, führen Sie die Installation bedingt aus.
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 mit selbst gehosteten Agents
Sie können die folgenden Methoden verwenden, um die Azure DevOps CLI in Ihrem selbst gehosteten Agent zu installieren oder zu aktualisieren.
- Manuelles Installieren der Azure CLI- und Azure DevOps CLI-Erweiterung
- Installieren der Azure CLI- und Azure DevOps CLI-Erweiterung in Ihrer Pipeline
Manuelles Installieren der Azure CLI- und Azure DevOps CLI-Erweiterung
Installieren der Azure CLI- und Azure DevOps CLI-Erweiterung auf Ihrem selbst gehosteten Agent, wenn Sie das Image des virtuellen Computers für den Agent bereitstellen, ist schneller als jedes Mal, wenn die Pipeline ausgeführt wird.
- Informationen zum Installieren von Azure CLI auf Ihrem selbst gehosteten Agentimage finden Sie unter Installieren der Azure CLI. Es gibt separate Anweisungen für Windows, Linux und macOS.
- Installieren Sie nach der Installation der Azure CLI die Azure DevOps CLI-Erweiterung.
Installieren der Azure CLI- und Azure DevOps CLI-Erweiterung in Ihrer Pipeline
Das folgende Beispiel für die Konfiguration der Azure CLI- und Azure DevOps CLI-Erweiterung für einen selbst gehosteten Agent mit einer Pipeline hat die folgenden Voraussetzungen.
- Installieren von Azure CLI mit Python
- Python muss gemäß den Anweisungen in der Python-Versionsaufgabe auf dem Agent installiert werden – Wie kann ich einen selbst gehosteten Agent für die Verwendung dieser Aufgabe konfigurieren? Die
UsePythonVersion@0
Aufgabe installiert Python nicht auf Ihrem selbst gehosteten Agent. Wenn Sie nur eine Version von Python auf Ihrem selbst gehosteten Agent installiert haben und sich im Pfad befindet, müssen Sie dieUsePythonVersion@0
Aufgabe nicht verwenden.
- Python muss gemäß den Anweisungen in der Python-Versionsaufgabe auf dem Agent installiert werden – Wie kann ich einen selbst gehosteten Agent für die Verwendung dieser Aufgabe konfigurieren? Die
# 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'
- Installieren der Azure CLI DevOps-Erweiterung
- Azure CLI Version 2.10.1 oder höher ist installiert.
- Auf dem Agent und im Pfad ist eine Version installiert
bash
. Für die Verwendung der Bash-Aufgabe ist eine Bash-Installation erforderlich.
# 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
# ...
Im folgenden Beispiel wird Azure CLI installiert, gefolgt von der Azure DevOps CLI-Erweiterung.
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
# ...
Zuweisen der Ergebnisse eines Azure DevOps CLI-Aufrufs zu einer Variablen
Um die Ergebnisse eines Azure DevOps CLI-Aufrufs an eine Pipelinevariable zu speichern, verwenden Sie die task.setvariable
in Set-Variablen in Skripts beschriebene Syntax. Im folgenden Beispiel wird die ID einer Variablengruppe namens Fabrikam-2023 abgerufen und anschließend in einem nachfolgenden Schritt verwendet.
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'
Weitere Beispiele für das Arbeiten mit Variablen, einschließlich der Arbeit mit Variablen über Aufträge und Phasen hinweg, finden Sie unter Definieren von Variablen. Beispiele für die abfragesyntax, die im vorherigen Beispiel verwendet wird, finden Sie unter Abfragen der Azure CLI-Befehlsausgabe mithilfe einer JMESPath-Abfrage.