我正在努力改进我的Jenkins设置,使其更易于维护和强大。我有一组依赖库。当一个开发人员提交时,我想立即对该库和下游库运行单元测试。
构建都配置为由Jenkins触发,但监视存储库的不同子文件夹(一个作业jobA监视/ srcA /,另一个jobB监视/ srcB /等)
每个作业编译库(c ++),运行单元测试并发布覆盖结果。 我现在所做的只是独立管理这个特定项目的每个工作。
我想设置一个链条,理想情况下可以生成一些图形概述。
假设我的工作链如下:
loggingLib
|
V
guiLib
|
V
commonLib
/ \
/ \
libA libB
\ /
\ /
|
V
libFunction
我想提交loggingLib来触发所有下游构建和测试,以便我保证上游更改不会破坏下游库。但是有一些主要的提交会影响多个库(破坏版本号,API更改等)。提交将(gerrit-)触发所有受影响的库(例如,guiLib和commonLib)。在这种情况下,guiLib将链触发commonLib。我想找到一种方法,如果触发guiLib,那么commonLib不会独立触发,而只是作为guiLib的子代触发。此外,如果子构建失败,则父构建也应标记为失败,因为它是导致问题的原因。
正如您在上面看到的,还有一个菱形,所以如果它们是触发器的“根”,libA和libB必须在它们完成时触发libFunction,但是commonLib必须同时触发libA和libB(典型用于加入插件或构建流程。)
使用各种插件的组合(参数化,连接,conditionalBuildStep),我可以或多或少得到我想要的东西,但它几乎无法维护,我无法避免影响多个文件夹的提交为该文件夹生成多个构建(直接+作为依赖)。
非常感谢您的时间和帮助!