Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant Jenkins是否仅在必要时触发依赖构建?_Ant_Jenkins - Fatal编程技术网

Ant Jenkins是否仅在必要时触发依赖构建?

Ant Jenkins是否仅在必要时触发依赖构建?,ant,jenkins,Ant,Jenkins,我有以下构建场景: 项目C依赖于项目B,而项目B依赖于项目A 项目X依赖于C,项目Y依赖于B,项目Z依赖于A 还有许多其他模块具有依赖关系,但最“复杂”的构建关系是与project X的关系。为了在Jenkins中设置此关系,我使用了参数化触发器插件,并带有“阻塞直到触发的project完成构建”选项。每个可构建模块都有自己的Jenkins作业,插件用于阻止必要的依赖构建作业 我在这个设置中遇到了两个问题 项目A和B在项目X、Y、Z等的可传递依赖链中多次构建 Jenkins有时会完全阻塞构建项目

我有以下构建场景:

项目C依赖于项目B,而项目B依赖于项目A

项目X依赖于C,项目Y依赖于B,项目Z依赖于A

还有许多其他模块具有依赖关系,但最“复杂”的构建关系是与project X的关系。为了在Jenkins中设置此关系,我使用了参数化触发器插件,并带有“阻塞直到触发的project完成构建”选项。每个可构建模块都有自己的Jenkins作业,插件用于阻止必要的依赖构建作业

我在这个设置中遇到了两个问题

  • 项目A和B在项目X、Y、Z等的可传递依赖链中多次构建
  • Jenkins有时会完全阻塞构建项目,因为作业X、Y、Z等的构建已填满所有可用的执行器(由scm更改触发),并且依赖项目在队列中等待构建 我正在寻找关于如何为这种构建环境配置Jenkins的建议。我是詹金斯的新手,所以我不知道有什么办法可以解决这个问题

    编辑:


    所有作业均由SCM更改触发。依赖项目也由参数化触发器插件触发;“阻止触发的项目完成其构建”选项。

    Jenkins有多种触发构建的方法。最常见的方法是监视存储库的更改

    但是,您也可以在另一个作业完成生成后自动触发生成。这是建在詹金斯。查看“生成触发器”下的复选框,选中“生成其他项目后生成”,或在“生成后”部分中,选择“生成其他项目生成后操作”。而且,您可以在一个生成上有多个触发器,因此,如果来自另一个项目的依赖项发生更改或者源文件发生更改,则可能会发生生成

    如果您使用Maven或Ivy,那么如果项目使用的Maven/Ivy jar依赖项发生更改,则可以使用一些插件来触发构建


    另一个有用的插件是。这允许您将构建工件从项目“X”复制到项目“Y”以供项目“Y”用于构建。

    您能列出您用于触发每个构建的机制吗?SCM更改、使用Ivy插件之类的依赖项更改、由上游构建触发等?如果某些构建是由多种机制触发的,您可能可以简化触发器。@gareth_bowles编辑了一个问题。maven插件是否会在对jar的现有版本(例如快照版本)进行更改时触发?或者,它是否只查找增量版本?根据:此插件将检查在项目的依赖项解析过程中是否更新了任何快照依赖项(或可选的插件快照),并触发生成。只要依赖项是快照,这就应该可以工作。