Jenkins:使用子项目构建项目的最佳方式

时间:2013-02-27 10:17:58

标签: java jenkins

我们在同一个SVN存储库中有一个包含两个子项目的项目。 例如:

svn://ip/svn/ trunk/subproject1
svn://ip/svn/ trunk/subproject2

项目构建应包括两个子项目的构建结果。 为了使我们的构建更快,我想分别在SVN被更改时(在svn:// ip / svn / trunk / subproject1中)运行subproject1的构建。类似于subproject2

最好的方法是什么? 我可以用一份工作吗? 在这种情况下,我应该如何定义构建触发器?

或者我需要定义3个工作:每个子项目一个或每个项目一个?

任何帮助将不胜感激! 最好的祝福, 迈克尔

3 个答案:

答案 0 :(得分:9)

使用Jenkins可以通过多种方式实现这一目标。

  1. multi-SCM plugin将允许 - 顾名思义 - 在单个作业中包含多个源存储库。

  2. 您可以定义相互触发的n个作业(即彼此依赖)。您可以在Build Triggers>下找到此信息。 Build after other projects are built

  3. 还可以选择控制下游作业的主作业。您会在Post-build Actions>下找到此选项。 Build other projects

  4. 关于构建触发,您可以使用poll SCM选项。它是not the most efficient method,但你的选择可能受限于SVN而不是Git。

    我刚刚注意到您还提到了整理所有版本的结果 - 您可以通过单个作业或aggregate downstream test results下的Post-build Actions选项来实现此目的。

    最终,您需要明确自己的构建策略。听起来,如果对任一子项目进行了更改,您希望确保不会破坏任何内容。我不确定多SCM插件如何处理轮询多个存储库的概念,因此您可能需要将其考虑在内。

    我想我已经给了你一些选择尝试;让我知道你是怎么过的。

答案 1 :(得分:2)

这是一个旧线程(18个月),但几天前Jenkins multijob插件发布了一个新版本,其中包含一个选项,只有在自上次构建后scm更改时才允许触发构建:

仅当SCM更改时,构建

无论此选项如何,都可以选择强制构建。

答案 2 :(得分:1)

Jenkins还有一个Multijob Plugin。您可以使用它在一个主项目中分层运行子项目构建。