Резервный ресурс хранилища YAML AzureDevOps `ref` - PullRequest
0 голосов
/ 03 апреля 2020

Мы экспериментируем с AzureDevOps. Мы используем git multirepo и, к сожалению, между разными репозиториями существуют прямые зависимости. В предыдущем инструменте мы использовали для сопоставления веток из разных репозиториев по их именам с откатом к мастеру - если ветка XXX отсутствует в каком-либо репо, чем использовать мастер.

Я бы хотел добиться того же поведения с AzureDevOps Синтаксис YAML. Вот моя попытка.

resources:         
  repositories:
  - repository: repo      
    type: GitHub
    connection: myGitHubConnection
    source: primaryRepo
    ref: $(Build.SourceBranchName)
  - repository: repo      
    type: GitHub
    connection: myGitHubConnection
    source: secondaryRepo
    ref: $(Build.SourceBranchName)

У него есть одна проблема - если $(Build.SourceBranchName) отсутствует на secondaryRepo, происходит сбой конвейера с сообщением:

Конвейер недопустим. Не удалось получить последнюю исходную версию для репозитория company / primaryRepo, размещенного на GitHub с использованием ref refs /head / $ (Build.SourceBranchName) ...

Где указано c имя ветви заменено (переменная работает).

Есть ли способ указать запасной вариант в случае, если ref недопустимо (ветвь не существует)? Я попытался сделать дубликат ref и использовать списки в YAML, но ни один не удался.

1 Ответ

1 голос
/ 07 апреля 2020

Во-первых, мы не поддерживаем использование динамических c переменных в ref. На сегодняшний день пользователи должны предоставить здесь одно фиксированное значение .

Вот почему вы получаете сообщение типа using ref refs/heads/$(Build.SourceBranchName). Вы можете непосредственно видеть, что фактическое имя ветки не было успешно скомпилировано во время анализа.

Кроме того, наша система может только разрешать репозитории один раз .

Это означает, что после того, как система обнаружила, что одна ветвь не существует после анализа задания (обычно это задание завершается на шаге initial, который завершился до выполнения) , наша система может не иметь процесс его автоматической компиляции, то есть возврат к ветви master.

enter image description here


Мы учли это предложение , как только оно действительно расширилось, оно может помочь достичь того, кем вы являетесь ищем, потому что мы можем сделать выражение условия и переменные здесь. Вы можете проголосовать и прокомментировать его там, чтобы повысить его приоритетность.

Есть ли способ указать запасной вариант в случае недопустимого ref (ветвь не существует)?

Условные выражения и переменные не позволяют применять здесь, возможно они могут быть реализованы в форме API или сценариев?

Боюсь, но должен сказать, что нет, достичь этого невозможно до сих пор.

Как и то, что вы испытали, весь конвейер потерпит неудачу, как только наша система обнаружит, что ответвления там не существует. Если конвейер не работает, API / сценарии не могут иметь никаких шансов для выполнения операций (отступление).

...