У нас есть несколько конвейерных заданий jenkins с такими шагами, как:
- Сборка -> модульные тесты -> pu sh до артефакта
- Сборка -> модульные тесты - > deploy
- Build -> unit-тесты -> интеграционные тесты
et c.
Руководство хочет объединить все это в один большой конвейер и в настоящее время у моей команды есть 2 подхода, как это сделать:
a) Создать работу по конвейеру с большой задницей со всеми этапами внутри
Недостатки в том, что нам не нужно развертывать или опубликуйте sh в артефакте для каждой отдельной сборки, так что внутри будут некоторые операторы if
, которые при необходимости пропустят этапы - что сделает историю сборок полным беспорядком - потому что одна сборка может делать что-то отличное от другой (например, сборка # 1 publi sh binaries, и build # 2 запустить интеграционные тесты). Плюсы в том, что у нас все в одном рабочем пространстве и jenkinsfile.
b) Создайте отдельную работу для каждой единицы задачи.
Как и «build», «интеграционные тесты», «публикация» и «развертывание», а затем создать одно оркестровое задание, которое будет вызывать меньшие задания в последовательности, завернутой в несколько этапов. Минусы этого в том, что у нас все еще есть КИ, распределенные по разным профессиям, и между ними нужно передавать артефакты. Плюсы, конечно, в том, что мы можем запускать их независимо при необходимости, поэтому, если вам нужны только юнит-тесты - вы запускаете только задание юнит-тестов, что также приведет к нормальной и содержательной истории сборки.
Не могли бы вы указать, если бы вы go с помощью a или b, или как иначе вы бы сделали это вместо этого?