Partager via


Interface CLI Azure DevOps dans le YAML de pipeline Azure

Azure DevOps Services

Si vous souhaitez utiliser Azure DevOps CLI avec un pipeline YAML, vous pouvez utiliser l’extension Azure DevOps ou utiliser la tâche AzureCLI. Les agents Windows et Linux hébergés par Microsoft sont préconfigurés avec Azure CLI et l’extension Azure DevOps CLI. L’extension Azure DevOps CLI exécute az devops commandes.

Vous pouvez vous authentifier auprès d’un PAT ou utiliser la tâche AzureCLI@2 avec une connexion de service. L’utilisation d’une connexion de service est l’option la plus sécurisée, car vous n’aurez pas besoin de gérer manuellement les informations d’identification.

S’authentifier auprès d’Azure DevOps

Certaines commandes Azure DevOps CLI, telles az devops configure que et az devops --help, ne nécessitent aucune authentification. Ils ne se connectent pas à Azure DevOps. La plupart des commandes interagissent avec Azure DevOps et nécessitent une authentification.

Vous pouvez vous authentifier à l’aide du jeton de sécurité System.AccessToken utilisé par le pipeline en cours d’exécution, en l’affectant à une variable d’environnement nommée AZURE_DEVOPS_EXT_PAT, comme illustré dans l’exemple suivant :

L’utilisation de System.AccessToken s’appuie sur un PAT. En guise d’alternative plus sécurisée, vous pouvez utiliser la tâche AzureCLI@2 pour remplir une connexion de service.

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

Si plusieurs étapes nécessitent une authentification, ajoutez la variable d’environnement AZURE_DEVOPS_EXT_PAT à chaque étape.

Pour plus d’informations sur l’étendue du jeton de sécurité utilisé par le pipeline en cours d’exécution, voir Accéder aux référentiels, artefacts et autres ressources.

Pour plus d’informations sur l’authentification à l’aide d’un jeton d’accès personnel (PAT), consultez Se connecter avec un jeton d’accès personnel.

Se connecter à Azure DevOps CLI avec des agents hébergés par Windows et Linux

Les agents Windows et Linux hébergés par Microsoft sont préconfigurés avec Azure CLI et l’extension Azure DevOps CLI.

L’exemple suivant montre comment se connecter à Azure DevOps et exécuter quelques commandes. Cet exemple utilise l’image de l’agent ubuntu-latest hébergé par Microsoft. Vous pouvez le remplacer par l’une des autres images hébergées par Windows ou Linux.

Cet exemple s’authentifie auprès d’Azure DevOps CLI. Il utilise le jeton de sécurité System.AccessToken utilisé par le pipeline en cours d’exécution.

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)

Installer l’extension CLI Azure DevOps avec des agents hébergés macOS

Azure CLI est installée sur les agents macOS hébergés par Microsoft, mais pas l’extension Azure DevOps CLI. Pour installer l’extension Azure DevOps CLI, exécutez la commande suivante dans votre pipeline avant d’effectuer des appels Azure DevOps CLI :

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

Mettre à niveau la version d’Azure CLI de l’agent hébergé

Les agents hébergés par Microsoft déploient généralement des mises à jour hebdomadaires sur les logiciels dans les environnements virtuels. Pour certains outils, la dernière version au moment du déploiement est utilisée. Dans d’autres cas, l’outil est épinglé à des versions spécifiques.

  • Pour vérifier les logiciels inclus et leurs versions pour les agents hébergés par Microsoft, y compris la version installée d’Azure CLI et de l’extension Azure DevOps CLI, suivez les liens Logiciels inclus dans la table Software .
  • Pour vérifier la version actuelle d’Azure CLI, consultez Installation d’Azure CLI.

Vous pouvez mettre à niveau Azure CLI sur vos images hébergées en exécutant les commandes suivantes dans votre pipeline :

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

Installer de manière conditionnelle l’extension Azure DevOps CLI

Si votre pipeline s’exécute sur plusieurs images de machine virtuelle hébergées par Microsoft, certaines d’entre elles n’ont pas installé l’extension AZURE DevOps CLI, vous pouvez l’installer de manière conditionnelle.

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 avec agents auto-hébergés

Vous pouvez installer ou mettre à niveau Azure DevOps CLI dans votre agent auto-hébergé à l’aide des méthodes suivantes :

Installer manuellement Azure CLI et l’extension Azure DevOps CLI

L’installation d’Azure CLI et de l’extension Azure DevOps CLI sur votre agent auto-hébergé lorsque vous approvisionnez l’image de machine virtuelle pour l’agent est plus rapide que de les installer chaque fois que le pipeline est exécuté.

Pour installer Azure CLI sur votre image d’agent auto-hébergé, consultez Installer Azure CLI. Il existe des instructions distinctes pour Windows, Linux et macOS.

Après avoir installé Azure CLI, installez l’extension Azure DevOps CLI.

Installer Azure CLI et l’extension Azure DevOps CLI dans votre pipeline

L’exemple suivant de configuration d’Azure CLI et de l’extension Azure DevOps CLI sur un agent auto-hébergé à l’aide d’un pipeline présente les conditions préalables suivantes :

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

Installez l’extension Azure CLI DevOps :

  • Azure CLI version 2.10.1 ou ultérieure est installée.
  • Une version de bash est installée sur l’agent et dans le chemin d’accès. Une installation bash est requise pour utiliser la tâche 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
# ...

L’exemple suivant installe Azure CLI, puis l’extension 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
# ...

Affecter les résultats d’un appel Azure DevOps CLI à une variable

Stockez les résultats d’un appel Azure DevOps CLI à une variable de pipeline à l’aide de la syntaxe task.setvariable décrite dans Définir des variables dans des scripts. L’exemple suivant obtient l’ID d’un groupe de variables nommé Fabrikam-2023 et utilise cette valeur dans une étape suivante.

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'

S’authentifier avec une connexion de service

Lorsque vous utilisez une connexion de service, la connexion de service fournit les informations d’identification nécessaires pour Azure CLI et les commandes Azure DevOps CLI dans la tâche AzureCLI@2 sans nécessiter de gestion manuelle des informations d’identification dans le pipeline.

Note

Lorsque vous utilisez une connexion de service pour l’authentification, AzureCLI@2vous devez ajouter manuellement le principal de service à votre organisation Azure DevOps.

Cet exemple de code définit un nouveau paramètre, serviceConnectionavec le nom d’une connexion de service existante. Ce paramètre est référencé dans la AzureCLI@2 tâche. La tâche répertorie tous les projets (az devops project list) et pools (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

Affecter les résultats d’un appel Azure DevOps CLI à une variable

Stockez les résultats d’un appel Azure DevOps CLI à une variable de pipeline à l’aide de la syntaxe task.setvariable décrite dans Définir des variables dans des scripts. L’exemple suivant obtient l’ID d’un groupe de variables nommé kubernetes et utilise cette valeur dans une étape suivante.

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

Pour obtenir d’autres exemples d’utilisation de variables, notamment l’utilisation de variables sur plusieurs travaux et phases, consultez Définir des variables. Pour obtenir des exemples de syntaxe de requête utilisées dans l’exemple précédent, consultez Interrogation d’une sortie de commande Azure CLI à l’aide d’une requête JMESPath.