Не удается определить конвейер, запустивший сборку

Я использую функции нескольких репозиториев Azure DevOps, описанные здесь:

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

У меня есть файл YAML в одном репо, и конвейер указывает на этот YAML. YAML имеет триггер, настроенный для другого ресурса репозитория, поэтому при обновлении этого репо будет запущен конвейер:

 resources:
   repositories:
   - repository: MyRepo
     endpoint: 'MyRepos'
     type: git
     name: RepoName
     trigger:
     - '*'

В документации утверждается, что переменная Build.SourceBranch позволит мне определить, какая ветвь в MyRepo инициировала сборку конвейера: когда обновление одного из репозиториев запускает конвейер, следующие переменные устанавливаются на основе запуска репозитория

Однако, похоже, это не так. Независимо от того, какая ветвь запускает сборку, Build.SourceBranch всегда является refs / Heads / master, предположительно потому, что репо, содержащее YAML, имеет ветку по умолчанию «master».

Я также не могу найти ни одной переменной среды, для которой установлено имя ветки, которая запустила сборку. Итак, как я могу получить имя ветки, которая запустила сборку? Если нет возможности, думаю, это нужно добавить!


person Jez    schedule 23.08.2020    source источник


Ответы (1)


Проблема в следующем:

Согласно документу, Build.SourceBranch устанавливается на основе репозитория срабатывания. Однако его значение определяется репозиторием, в котором на практике находится файл YAML.

Я сделал следующие тесты. Есть два репо: RepoA и RepoB. У обоих репозиториев есть две ветки: «главная» и «отруби». И файл YAML находится в "мастере" RepoA.

  1. Зафиксируйте изменение «отрубей» RepoB. Значение Build.SourceBranch равно refs/heads/master. Это не соответствует документации.

  2. Зафиксируйте изменение «отрубей» RepoA. Значение Build.SourceBranch равно refs/heads/bran. Это соответствует документации.

  3. Зафиксируйте изменение «хозяина» «RepoB». Значение Build.SourceBranch равно refs/heads/master. Это соответствует документации.

  4. Зафиксируйте изменение «хозяина» RepoA. Значение Build.SourceBranch равно refs/heads/master. Это соответствует документации.

Таким образом, если сборка запускается RepoA, Build.SourceBranch может успешно представлять истинную ветвь. Однако, если сборка запускается RepoB, значение Build.SourceBranch всегда равно refs/heads/master.

Мы сообщили об этой проблеме группе продуктов.

person Jane Ma-MSFT    schedule 24.08.2020