设置Jenkins作业链,所有作业都指向单个存储库并由Gerrit触发

时间:2013-12-02 16:29:55

标签: jenkins jenkins-plugins gerrit

我正在努力改进我的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),我可以或多或少得到我想要的东西,但它几乎无法维护,我无法避免影响多个文件夹的提交为该文件夹生成多个构建(直接+作为依赖)。

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

0 个答案:

没有答案