Цепные трубопроводы Teamcity и жизненный цикл работы
Я хочу реализовать связанные конвейеры сборки, т.е. иметь конвейер в виде кода в файле в моем основном исходном хранилище проекта, где конвейер может иметь другие этапы сборки, определенные в других местах, выполняемые до и после моих этапов сборки. У меня нет доступа для определения шагов до и после.
Представьте себе, что вы хотите создать контейнер, в котором политика компании должна определять этапы проверки до и после сборки. Выполненный, за которым следует моя работа J, за которой следуют B. A и B определяются отделом безопасности, разработчики определяют только J.
Кроме того, сборка должна выполняться с помощью плагина, который будет создавать временные агенты сборки. Мне нужно написать плагин, так как Jetbrains один не готов к работе и не работает как требуется.
Мои вопросы:
Сохраняются ли конфигурации сборки Teamcity в SCM в том же хранилище, что и остальная часть исходного кода проекта? Или они сохраняются в отдельном репозитории SCM?
Я мог бы реализовать это несколькими способами:
а. Все сборки контейнеров определены как отдельное задание, J1, J2, ... Jn. Каждое задание должно быть вручную подключено к A и B. Если на более позднем этапе нам нужно вставить задание C между J и B, существует множество заданий, которые требуют перемонтажа. Есть ли способ ввести зависимости в исполняющую группу DAG после запуска J, так что A, B и C выполняются без необходимости вручную определять зависимости? Или группа DAG полностью определена после получения уведомления о сборке?
б. Я мог бы определить A и B в контейнерах, затем выполнить агент сборки + контейнер бегуна сборки, выполнить A, затем команды в J, затем B. Этот бегун контейнера был бы своего рода оркестратором. Добавление C потребовало бы смены оркестратора, но это означало бы, что не будет необходимости подключать A к J и C к B. Это даст дополнительное преимущество, связав сборку J с артефактами A, B и C, что сделает контрольный журнал неизменен. Это жизнеспособный подход?
Существует ли какая-либо документация по жизненному циклу событий на сервере и агенте, доступная плагинам на протяжении всего жизненного цикла сборки? Документация довольно скудная в отношении пользовательских плагинов.