ant - Jenkins 仅在必要时触发依赖构建?

标签 ant jenkins

我有以下构建场景:

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

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

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

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

  1. 项目 A 和 B 会多次构建,因为它们位于项目 X、Y、Z 等的传递依赖链中。
  2. Jenkins 有时会完全阻止构建项目,因为作业 X、Y、Z 等的构建已填满所有可用的执行器(由 scm 更改触发),并且依赖项目在队列中等待构建。

我正在寻找有关如何为此类构建环境配置 Jenkins 的建议。我是 Jenkins 新手,所以我不知道到底有哪些选项可以解决此问题。

编辑:

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

最佳答案

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

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

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

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

关于ant - Jenkins 仅在必要时触发依赖构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15437735/

相关文章:

jenkins - 如何访问 Jenkins Pipeline 项目中的 Junit 测试计数

windows - 无法将奴隶连接到主人

linux - .sh 文件的 CI Jenkins 权限被拒绝

带有JUnit测试套件错误的SpringJUnit4ClassRunner

Jenkins Git Changelog 插件

git - ERROR : Error fetching remote repo 'origin' , 返回状态码-1:

java - gzip 最大压缩使用 ant

java - 在ant中引用外部.jar库来构建Android java jar

java - 从 ant 构建文件中以编程方式检索某些任务

java - Java Web 应用程序的最小目录结构和 Ant 构建文件内容