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

Azure DevOps Services

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

Примечание.

В этой статье показано, как выполнить проверку подлинности с помощью 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
  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, а размещенные образы еще не имеют последней версии, можно обновить версию 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 для локального агента с помощью конвейера имеются следующие предварительные требования.

  • Установка Azure CLI с помощью Python

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