我正在努力改进我的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(通常用于Join插件)或buildflow) .

使用各种插件(参数化,连接,conditionalBuildStep)的组合,我可以或多或少得到我想要的东西,但它几乎无法维护,我无法避免影响多个文件夹的提交为该文件夹生成多个构建(直接作为依赖) .

非常感谢您的时间和帮助!