工具:
Jenkins 版1.470
Maven 2
颠覆

环境

假设我的建筑有多个项目A-D。依赖图存在,如图所示。这就是说:B依赖于A中的类,C依赖于B中的类,D依赖于A中的类。我们创建了 Jenkins 构建,这样他们将依赖于它们的构建称为构建后 Action 。

一种
|-> B-> C
|-> D

每天晚上,我们在Jenkins中触发完整版本(A版本,触发器B(触发器C),触发器D)。告诉A每晚进行构建,这很容易做到,其余的则级联。

问题

但是,在提交时,我们要构建一次提交的项目。

  • 情况1:我们轮询存储库(或使用commit hooks,这没有什么区别),发现对B进行了提交,然后B会构建,而C会构建。 成功!
  • 情况2:我们轮询存储库,发现B和C在一次提交中已提交,然后Jenkins将尝试构建B(触发C的构建)并构建C(第二个构建)。 失败。 看看会发生什么? C被编译两次,占用了宝贵的编译时间。保持快速构建!

  • 是否有人知道仅在每个已提交的构建管道中触发最高项目的方法?

    我想一种解决方案是使用复杂的SVN钩子(Hook),该钩子(Hook)确定每个管道中的最高项目。
  • 情况3:一次提交到B C和D。 SVN钩子(Hook)找到C取决于B。该钩子(Hook)调用特定于项目的链接以启动B和D的构建。

  • 陷阱:非常复杂的SVN提交钩子(Hook)。必须维护SVN Hook 中的管道。

    我觉得这是其他人遇到的问题。是否有Jenkins插件可以帮助您解决此问题?

    最佳答案

    说 Jenkins (Jenkins)等待构建直到c所依赖的构建完成才是一个主意。作业配置中的标记是为了这样做。但是您必须为每项工作执行此操作。
    顺便说一句...还有另一个标志,要求 Jenkins 等待构建,直到依赖项工作完成。

    关于build - Jenkins在Commit Hook上进行部分构建/模块化构建,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11109192/

    10-13 09:09
    查看更多