Delen via


Azure DevOps CLI in Azure Pipeline YAML

Azure DevOps Services

Als u Azure DevOps CLI wilt gebruiken met een YAML-pijplijn, kunt u de volgende voorbeelden gebruiken om Azure CLI te installeren, de Azure DevOps-extensie toe te voegen en Azure DevOps CLI-opdrachten uit te voeren.

Notitie

In de stappen in dit artikel ziet u hoe u verifieert met Azure DevOps en opdrachten uitvoert az devops met behulp van de Azure DevOps CLI-extensie. Als u Azure CLI wilt gebruiken om te communiceren met Azure-resources, gebruikt u de AzureCLI-taak.

Verifiëren met Azure DevOps

Sommige Azure DevOps CLI-opdrachten die niet worden aangeroepen bij Azure DevOps, zoals az devops configure en az devops -h, vereisen geen verificatie, maar de meeste opdrachten communiceren met Azure DevOps en vereisen wel verificatie. U kunt verifiëren met behulp van het beveiligingstoken System.AccessToken dat wordt gebruikt door de actieve pijplijn, door deze toe te wijzen aan een omgevingsvariabele met de naam AZURE_DEVOPS_EXT_PAT, zoals wordt weergegeven in het volgende voorbeeld.

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

Als u meerdere stappen hebt waarvoor verificatie is vereist, voegt u de AZURE_DEVOPS_EXT_PAT omgevingsvariabele toe aan elke stap.

Zie Access-opslagplaatsen, artefacten en andere resources voor meer informatie over het bereik van het beveiligingstoken dat wordt gebruikt door de actieve pijplijn.

Zie Aanmelden met een persoonlijk toegangstoken (PAT) voor meer informatie over verificatie met een persoonlijk toegangstoken.

Azure DevOps CLI met door Windows en Linux gehoste agents

De Door Microsoft gehoste Windows- en Linux-agents zijn vooraf geconfigureerd met Azure CLI en de Azure DevOps CLI-extensie.

In het volgende voorbeeld ziet u hoe u zich aanmeldt bij Azure DevOps en een paar opdrachten uitvoert. In dit voorbeeld wordt de ubuntu-latest door Microsoft gehoste agentinstallatiekopie gebruikt, maar u kunt deze vervangen door een van de andere door Windows of Linux gehoste installatiekopieën.

In dit voorbeeld wordt geverifieerd met Azure DevOps CLI met behulp van het securitytoken system.AccessToken dat wordt gebruikt door de actieve pijplijn.

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 met door macOS gehoste agents

Op de door Microsoft gehoste macOS-agents is Azure CLI geïnstalleerd, maar niet op de Azure DevOps CLI-extensie. Als u de Azure DevOps CLI-extensie wilt installeren, voert u de volgende opdracht uit in uw pijplijn voordat u Azure DevOps CLI-aanroepen uitvoert.

# Install Azure DevOps extension
- bash: az extension add -n azure-devops
  displayName: 'Install Azure DevOps extension'

Azure CLI-versie van gehoste agent

Door Microsoft gehoste agents implementeren doorgaans wekelijkse updates voor de software in de virtuele omgevingen. Voor sommige hulpprogramma's wordt de nieuwste versie op het moment van de implementatie gebruikt; voor anderen wordt het hulpprogramma vastgemaakt aan specifieke versies.

U kunt de Azure CLI bijwerken op uw gehoste installatiekopieën door de volgende opdrachten uit te voeren in uw pijplijn.

# 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'

De Azure DevOps CLI-extensie voorwaardelijk installeren

Als uw pijplijn wordt uitgevoerd op verschillende door Microsoft gehoste VM-installatiekopieën, waarvan sommige niet de Azure DevOps CLI-extensie hebben geïnstalleerd, voert u de installatie voorwaardelijk uit.

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 met zelf-hostende agents

U kunt de volgende methoden gebruiken om de Azure DevOps CLI te installeren of bij te werken in uw zelf-hostende agent.

Azure CLI en Azure DevOps CLI-extensie handmatig installeren

Azure CLI en Azure DevOps CLI-extensie installeren op uw zelf-hostende agent wanneer u de installatiekopie van de virtuele machine voor de agent inricht, is sneller dan wanneer de pijplijn wordt uitgevoerd.

Azure CLI en Azure DevOps CLI-extensie installeren in uw pijplijn

Het volgende voorbeeld van het configureren van de Azure CLI- en Azure DevOps CLI-extensie op een zelf-hostende agent met behulp van een pijplijn heeft de volgende vereisten.

# 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-extensie installeren
    • Azure CLI versie 2.10.1 of hoger is geïnstalleerd.
    • Er is een versie geïnstalleerd bash op de agent en in het pad. Er is een bash-installatie vereist voor het gebruik van de bash-taak.
# 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
# ...

In het volgende voorbeeld wordt Azure CLI geïnstalleerd, gevolgd door de Azure DevOps CLI-extensie.

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
# ...

De resultaten van een Azure DevOps CLI-aanroep toewijzen aan een variabele

Als u de resultaten van een Azure DevOps CLI-aanroep naar een pijplijnvariabele wilt opslaan, gebruikt u de task.setvariable syntaxis die wordt beschreven in Variabelen instellen in scripts. In het volgende voorbeeld wordt de id opgehaald van een variabelegroep met de naam Fabrikam-2023 en wordt deze waarde vervolgens gebruikt in een volgende stap.

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'

Zie Variabelen definiëren voor meer voorbeelden van het werken met variabelen, waaronder het werken met variabelen tussen taken en fasen. Voor voorbeelden van de querysyntaxis die in het vorige voorbeeld wordt gebruikt, raadpleegt u Hoe u query's uitvoert op azure CLI-opdrachtuitvoer met behulp van een JMESPath-query.