2013-02-27 118 views
4

我们在同一个SVN存储库中有两个子项目。 例如:Jenkins:使用子项目构建项目的最佳方式

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

构建项目应包括的结果建立两个子项目。 为了更快地构建我们的构建,我只想在SVN分别发生变化时(在svn:// ip/svn/trunk/subproject1中)运行subproject1的构建。类似的子项目2

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

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

任何帮助将不胜感激! 此致敬礼, 迈克尔

回答

9

有多种方式可以使用詹金斯实现这一点。

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

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

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

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

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

最终,您需要清楚构建策略。在我看来,如果对子项目进行更改,您希望确保没有任何问题被破坏。我不确定多SCM单元插件如何处理多个存储库轮询的概念,因此您可能需要考虑这一点。

我想我已经给了您几个选项来尝试;让我知道你是怎么办的。

+0

亲爱的本,感谢您的帮助! – Michael 2013-02-27 21:26:57

+0

我已经提出了额外的问题http://stackoverflow.com/questions/15122977/jenkins-conditional-trigger-on-the-build-step – Michael 2013-02-27 21:42:37

1

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

2

这是一个古老的线程(18个月),但前几天的詹金斯多椎插件已经发布了集成了一个选项,允许触发构建自去年建立只有当SCM改变一个新的版本:

这是只有SCM更改才能构建。

无论此选项如何,还有一个选项可以强制构建。

0

我不知道如何使用SVN设定的想法,但GIT可以设置其他行为对源代码管理的一步。

选择轮询忽略提交某些路径,然后设置包括区域。此设置可以过滤同一个git存储库中的其他子项目提交。

也做构建设置触发一步,剔投票SCM离开计划空白。

如果要设置自动部署,您可能需要在git存储库端设置网络钩子

Jenkins版本是2.32和Jenkins Git plugins