Я настраиваю конвейерные задания Jenkins для нашей сборки. Ранее мы использовали задания Freestyle для создания каждого из наших репозиториев с различными дополнительными заданиями, запускаемыми вручную на этапах упаковки и развертывания.
На данный момент у нас есть следующая настройка конвейера:
- repo A / Jenkinsfile - Pipeline A - сборка, запуск модульных тестов и создание артефактов
- репо B / Jenkinsfile - конвейер B - сборка, запуск модульных тестов и создание артефактов
Каждый раз, когда конвейер A или B завершается, я хочу запустить конвейер C.
- Конвейер C должен взять артефакты последних конвейеров A и B, упаковать их вместе как образ докера, запустить интеграционные тесты, развернуть в промежуточной среде.
Где мне хранить Jenkinsfile для конвейера C, поскольку у него нет собственного репозитория исходного кода?
Для меня это логически выглядит как отдельный конвейер, который находится ниже по течению от A и B, поэтому предположим, что он принадлежит отдельному Jenkinsfile, но тогда где это будет в системе управления версиями. Чтобы уточнить, я хотел бы, чтобы все мои файлы конвейера находились под контролем источника.
В качестве альтернативы, следует ли мне попытаться определить весь конвейер (включая интеграцию и т. д.) только в одном из родительских конвейеров, пропуская часть сборки, когда она запускается из другого конвейера? Оставив другой как простую сборку. Например
Трубопровод А (полный трубопровод)
- build
- модульные тесты
- артефакт
- (получить последний артефакт B)
- интеграционный тест
- развернуть на постановку
Конвейер B (простая сборка, которая затем использует полный конвейер)
- build
- модульные тесты
- артефакт
- запускать конвейер A, пропуская все до этапа интеграционного тестирования (возможно, с использованием
when
блоков на тех этапах, которые смотрят на триггер сборки?)
Я могу найти ресурсы по созданию или запуску одного конвейера из другого следующим образом: https://metamorphant.de/blog/posts/2019-03-11-jenkins-101-downstream-projects/, но нет информации о структурировании вышеупомянутых зависимостей и конвейеров в Jenkins Pipeline. .