Как настроить приоритеты между конвейерами, которые могут запускаться одновременно на Azure DevOps конвейерах - PullRequest
0 голосов
/ 08 апреля 2020

Я использую Azure devOps для создания и развертывания моего приложения, и в этом приложении у меня есть проект, который используется другими связанными приложениями (назовем его проектом N). Поэтому я решил развернуть этот проект как пакет NuGet и использовать его во время сборки.

Проект N может часто меняться, поэтому у меня возникли некоторые проблемы с определением надежной установки, которая:

  1. Создает пакет NuGet только при наличии изменений в Project N и его зависимостях
  2. Гарантирует, что, если пакет NuGet должен быть создан согласно пункту 1), конвейер сделает это раньше всего остального

Способ, который я до сих пор настраивал, состоит в том, чтобы иметь два разных конвейера, один, который создает пакет NuGet и развертывает его (NuGet Pipeline), и другой, который использует этот пакет NuGet, а затем создает и развертывает приложение (главный конвейер).

Проблема в том, что когда происходят изменения как в файлах, связанных с проектом N, так и в некоторых из оставшихся файлов решения, я не знаю, как сделать Правило, которое гласит: «Запустите конвейер NuGet перед главным конвейером», поэтому на данный момент я должен верить в удачу, чтобы это произошло, а если нет t, мне пришлось бы вручную запускать главный конвейер после завершения двух сборок. Потому что я хочу быть уверен, что новые изменения, внесенные в Проект N, не нарушают Решение.

Существует ли элегантный способ сделать это? Я мог бы настроить триггер, который при завершении работы Pipeline NuGet будет запускать основной конвейер, но, выполнив его таким образом, я дважды запускаю основной конвейер всякий раз, когда будут внесены изменения в проект N и остальную часть решения.

1 Ответ

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

Я не думаю, что есть какой-то способ сделать то, что вы хотите. Если важен порядок двух заданий, вы должны поместить их в один и тот же конвейер. Внутри конвейера вы можете создавать зависимости между заданиями.

см. https://docs.microsoft.com/en-us/azure/devops/pipelines/process/stages?view=azure-devops&tabs=yaml

Однако это будет означать, что оба задания ВСЕГДА будут выполняться. Это может не быть проблемой, поскольку в задаче nuget pu sh есть возможность игнорировать дублирующиеся версии (в случае, если проект N не был изменен, он по-прежнему имеет ту же версию):

enter image description here

Итак, в итоге:

  • Создайте один конвейер с двумя заданиями
  • сделайте работу "основного конвейера" зависимой от " Проект N "job
  • в конвейере" Project N ", убедитесь, что включена опция" разрешить пропуск дубликатов "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...