Мы используем около 30 репо для обработки всего нашего программного обеспечения в нашей компании.Наш код смешан между C #, C ++ и python.Изначально мы собирались использовать TeamCity для нашего CI-сервера, и я обнаружил, что его чрезвычайно легко настроить в соответствии с нашей системой репо.Однако мой менеджер решил, что мы должны использовать Jenkins вместо этого.
Когда я начал настраивать Jenkins, я обнаружил, что у него, естественно, нет поддержки нескольких репозиториев на одну работу.Для этого есть плагин, но на вики-странице сопровождающий плагин признал, что это скорее подтверждение концепции, чем солидная функция, поэтому я не решаюсь его использовать, хотяв конце концов меня могут заставить.
Должны ли задания настраиваться независимо от каждого репо, где можно запускать модульные тесты и сборки?Я не вижу в этом приемлемого варианта, поскольку наши репозитории зависят друг от друга, если только я не пропустил конфигурацию или другой плагин.Или сборки могут зависеть друг от друга, чтобы сделать что-то подобное возможным?
Наша конечная цель состоит в том, чтобы Jenkins также выполнял наши развертывания в нашей области разработки.Это оказалось легко сделать в TeamCity, и я думаю, что это должно быть так же легко сделать и в Дженкинсе.Может ли работа получить доступ к репозиториям с других рабочих мест?Я не уверен, что это понятно, но в команде команды были переменные проекта, которые могли бы позволить вам выбрать любое репо, которое вы определили (например, %FIRST_REPO%
, %SECOND_REPO%
)
Подводя итог, можно сказать, чтоЕсть ли надежный способ обработки нескольких ртутных репозиториев в Jenkins?Могут ли другие задания зависеть от другого и получать доступ к хранилищу другого?
Я надеюсь, что кто-то с большим опытом работы с КИ, чем я, может помочь.Возможно, для нашей установки лучше подойдет другой CI-сервер, у кого-нибудь есть опыт работы с BuildBot?
Я подумал, что было бы полезно перечислить расположение репозиториев:
- app1.application
- app1.common
- app1.deploy
- app2.application
- app2.common
- app2.deploy
- platform.common
- platform.deploy
Где app1
и app2
будут зависеть от некоторых ресурсов из platform.common
.