Получите имя ветви в конвейере Azure Devops

#azure #powershell #azure-devops #yaml #azure-pipelines

Вопрос:

У меня есть проект, использующий несколько репозиториев:

 resources:
  repositories:
  - repository: one
    type: git
    name: repo/one
    ref: release
  - repository: two
    type: git
    name: repo/two
    ref: develop
  - repository: three
    type: git
    name: repo/three
    ref: master
 

Как мне получить переменные среды для каждого из этих репозиториев на последующих шагах? Например, меня интересует переменная $(Build.номер здания). Теперь я получаю переменную только для ветви, из которой запускается сам проект yaml.

Ответ №1:

repository Ключевое слово в resources позволяет указать внешние репозитории.

При проверке нескольких репозиториев некоторые сведения о собственном репозитории доступны в виде предопределенных переменных

Когда вы используете триггеры с несколькими репо, некоторые из этих переменных вместо этого содержат информацию о репозитории запуска. Подробные сведения обо всех репозиториях, используемых заданием, доступны в виде объекта контекста шаблона под названием ресурсы.репозитории

Чтобы получить переменные среды для каждого из этих репозиториев, вам необходимо определить переменную:

Пример:

 resources:
  repositories:
  - repository: other
    type: git
    name: MyProject/OtherTools

variables:
  tools.ref: $[ resources.repositories['other'].ref ]

steps:
- checkout: self
- checkout: other
- bash: |
    echo "Tools version: $(tools.ref)"
 

https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#repository-details

Комментарии:

1. Я попробовал этот вариант, и я получаю пустую переменную $TOOLS_REF Также, я не вижу, как получить имя ветви.

2. Вы можете использовать переменные в bash, такие как echo «Версия инструментов: $(tools.ref)»