CLI de Azure DevOps en YAML de Azure Pipeline
Azure DevOps Services
Si quiere usar la CLI de Azure DevOps con una canalización YAML, puede usar los ejemplos siguientes para instalar la CLI de Azure, agregar la extensión de Azure DevOps y ejecutar comandos de la CLI de Azure DevOps.
Nota:
Los pasos de este artículo muestran cómo autenticarse con Azure DevOps y ejecutar az devops
comandos mediante la extensión de la CLI de Azure DevOps. Si desea usar la CLI de Azure para interactuar con los recursos de Azure, use la tarea AzureCLI.
Autenticación con Azure DevOps
Algunos comandos de la CLI de Azure DevOps que no llaman a Azure DevOps, como az devops configure
y az devops -h
, no requieren ninguna autenticación, pero la mayoría de los comandos interactúan con Azure DevOps y requieren autenticación. Puede autenticarse mediante el token de seguridad System.AccessToken usado por la canalización en ejecución; para ello, asígnelo a una variable de entorno denominada AZURE_DEVOPS_EXT_PAT
, como se muestra en el ejemplo siguiente.
- bash: |
az pipelines build list --organization '$(System.TeamFoundationCollectionUri)' --project '$(System.TeamProject)'
displayName: 'Show build list'
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
Si tiene varios pasos que requieren autenticación, agregue la AZURE_DEVOPS_EXT_PAT
variable de entorno a cada paso.
Para obtener más información sobre el ámbito del token de seguridad que usa la canalización en ejecución, consulte Repositorios de access, artefactos y otros recursos.
Para obtener más información sobre la autenticación mediante un token de acceso personal, consulte Inicio de sesión con un token de acceso personal (PAT).
CLI de Azure DevOps con agentes hospedados en Windows y Linux
Los agentes de Windows y Linux hospedados por Microsoft están preconfigurados con la CLI de Azure y la extensión de la CLI de Azure DevOps.
En el ejemplo siguiente se muestra cómo iniciar sesión en Azure DevOps y ejecutar algunos comandos. En este ejemplo se usa la ubuntu-latest
imagen del agente hospedado por Microsoft, pero puede reemplazarla por cualquiera de las demás imágenes hospedadas de Windows o Linux.
En este ejemplo se autentica con la CLI de Azure DevOps mediante el token de seguridad System.AccessToken usado por la canalización en ejecución.
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)
CLI de Azure DevOps con agentes hospedados en macOS
Los agentes hospedados por Microsoft para macOS tienen instalada la CLI de Azure, pero no la extensión de la CLI de Azure DevOps. Para instalar la extensión de la CLI de Azure DevOps, ejecute el siguiente comando en la canalización antes de realizar llamadas a la CLI de Azure DevOps.
# Install Azure DevOps extension
- bash: az extension add -n azure-devops
displayName: 'Install Azure DevOps extension'
Versión de la CLI de Azure del agente hospedado
Normalmente, los agentes hospedados por Microsoft implementan actualizaciones semanales en el software en los entornos virtuales. Para algunas herramientas, se usa la versión más reciente en el momento de la implementación; para otros usuarios, la herramienta está anclada a versiones específicas.
- Para comprobar el software incluido y sus versiones para agentes hospedados por Microsoft, incluida la versión instalada de la CLI de Azure y la extensión de la CLI de Azure DevOps, siga los vínculos Software incluido en la tabla Software.
- Para comprobar la versión actual de la CLI de Azure, consulte Instalación de la CLI de Azure.
Puede actualizar la CLI de Azure en las imágenes hospedadas mediante la ejecución de los siguientes comandos en la canalización.
# 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'
Instalación condicional de la extensión de la CLI de Azure DevOps
Si la canalización se ejecuta en varias imágenes de máquina virtual hospedadas por Microsoft, algunas de las cuales no tienen instalada la extensión de la CLI de Azure DevOps, realizará la instalación de forma condicional.
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'
CLI de Azure DevOps con agentes autohospedados
Puede usar los métodos siguientes para instalar o actualizar la CLI de Azure DevOps en el agente autohospedado.
- Instalación manual de la CLI de Azure y la extensión de la CLI de Azure DevOps
- Instalación de la CLI de Azure y la extensión de la CLI de Azure DevOps en la canalización
Instalación manual de la CLI de Azure y la extensión de la CLI de Azure DevOps
La instalación de la CLI de Azure y la extensión de la CLI de Azure DevOps en el agente autohospedado al aprovisionar la imagen de máquina virtual para el agente es más rápida que instalarlas cada vez que se ejecuta la canalización.
- Para instalar la CLI de Azure en la imagen del agente autohospedado, consulte Instalación de la CLI de Azure. Hay instrucciones independientes para Windows, Linux y macOS.
- Después de instalar la CLI de Azure, instale la extensión de la CLI de Azure DevOps.
Instalación de la CLI de Azure y la extensión de la CLI de Azure DevOps en la canalización
El ejemplo siguiente de configuración de la CLI de Azure y la extensión de la CLI de Azure DevOps en un agente autohospedado mediante una canalización tiene los siguientes requisitos previos.
- Instalación de la CLI de Azure mediante Python
- Python debe instalarse en el agente según las instrucciones de la tarea versión de Python: ¿Cómo puedo configurar un agente autohospedado para usar esta tarea? La
UsePythonVersion@0
tarea no instala Python en el agente autohospedado. Si solo tiene instalada una versión de Python en el agente autohospedado y está en la ruta de acceso, no es necesario usar laUsePythonVersion@0
tarea.
- Python debe instalarse en el agente según las instrucciones de la tarea versión de Python: ¿Cómo puedo configurar un agente autohospedado para usar esta tarea? La
# 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'
- Instalación de la extensión de DevOps de la CLI de Azure
# 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
# ...
En el ejemplo siguiente se instala la CLI de Azure seguida de la extensión de la CLI de Azure DevOps.
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
# ...
Asignación de los resultados de una llamada de la CLI de Azure DevOps a una variable
Para almacenar los resultados de una llamada de la CLI de Azure DevOps a una variable de canalización, use la task.setvariable
sintaxis descrita en Establecer variables en scripts. En el ejemplo siguiente se recupera el identificador de un grupo de variables denominado Fabrikam-2023 y, a continuación, se usa este valor en un paso posterior.
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'
Para obtener más ejemplos de cómo trabajar con variables, incluido el trabajo con variables en trabajos y fases, vea Definir variables. Para obtener ejemplos de la sintaxis de consulta usada en el ejemplo anterior, consulte Cómo consultar la salida del comando de la CLI de Azure mediante una consulta JMESPath.