Интерфейс командной строки Azure DevOps в Azure Pipeline YAML

Azure DevOps Services

Если вы хотите использовать Azure DevOps CLI с конвейером YAML, можно использовать следующие примеры для установки Azure CLI, добавления расширения Azure DevOps и запуска команд Azure DevOps CLI.

Примечание.

В этой статье показано, как выполнить проверку подлинности с помощью Azure DevOps и выполнить az devops команды с помощью расширения ИНТЕРФЕЙСА командной строки Azure DevOps. Если вы хотите использовать Azure CLI для взаимодействия с ресурсами Azure, используйте задачу AzureCLI.

Проверка подлинности с помощью Azure DevOps

Некоторые команды Azure DevOps CLI, которые не вызываются в Azure DevOps, например az devops configure и az devops -hне требуют проверки подлинности, но большинство команд взаимодействуют с 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)".

Интерфейс командной строки Azure DevOps с размещенными агентами Windows и Linux

Агенты Windows и Linux, размещенные в Майкрософт, предварительно настроены с помощью Azure CLI и расширения Azure DevOps CLI.

В следующем примере показано, как войти в Azure DevOps и выполнить несколько команд. В этом примере используется ubuntu-latest образ агента, размещенный корпорацией Майкрософт, но его можно заменить любым из других размещенных образов Windows или Linux.

В этом примере выполняется проверка подлинности с помощью интерфейса командной строки Azure DevOps с помощью маркера безопасности System.AccessToken , используемого запущенным конвейером.

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 с размещенными агентами macOS

Агенты с macOS, размещенные в Майкрософт, установили Azure CLI, но не расширение Интерфейса командной строки Azure DevOps. Чтобы установить расширение ИНТЕРФЕЙСА командной строки Azure DevOps, выполните следующую команду в конвейере перед вызовами Интерфейса командной строки Azure DevOps.

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

Версия Azure CLI размещенного агента

Агенты , размещенные корпорацией Майкрософт, обычно развертывают еженедельные обновления программного обеспечения в виртуальных средах. Для некоторых средств используется последняя версия во время развертывания; для других пользователей средство закреплено на определенных версиях.

  • Чтобы проверить включенное программное обеспечение и их версии для агентов, размещенных в Майкрософт, включая установленную версию Azure CLI и расширения Azure DevOps CLI, следуйте ссылкам включенного программного обеспечения в таблице 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

Если конвейер выполняется на нескольких образах виртуальных машин, размещенных корпорацией Майкрософт, некоторые из которых не установлены расширения ИНТЕРФЕЙСА командной строки Azure DevOps, вы выполняете установку условно.

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.

Установка расширения Azure CLI и Azure DevOps CLI в конвейере

В следующем примере настройки azure CLI и расширения Azure DevOps CLI для локального агента с помощью конвейера имеются следующие предварительные требования.

# 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
    • Устанавливается Azure CLI версии 2.10.1 или более поздней.
    • Существует версия bash , установленная на агенте и в пути. Для использования задачи bash требуется установка 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
# ...

В следующем примере устанавливается 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 переменной

Чтобы сохранить результаты вызова Azure DevOps CLI к переменной конвейера, используйте task.setvariable синтаксис, описанный в разделе Set переменных в скриптах. В следующем примере извлекается идентификатор группы переменных с именем Fabrikam-2023 , а затем используется это значение в следующем шаге.

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'

Дополнительные примеры работы с переменными, включая работу с переменными между заданиями и этапами, см. в разделе "Определение переменных". Примеры синтаксиса запроса, используемого в предыдущем примере, см. в статье "Как запросить выходные данные команды Azure CLI с помощью запроса JMESPath".