我们在同一个SVN存储库中有一个包含两个子项目的项目。 例如:
svn://ip/svn/ trunk/subproject1
svn://ip/svn/ trunk/subproject2
项目构建应包括两个子项目的构建结果。 为了使我们的构建更快,我想分别在SVN被更改时(在svn:// ip / svn / trunk / subproject1中)运行subproject1的构建。类似于subproject2
最好的方法是什么? 我可以用一份工作吗? 在这种情况下,我应该如何定义构建触发器?
或者我需要定义3个工作:每个子项目一个或每个项目一个?
任何帮助将不胜感激! 最好的祝福, 迈克尔
答案 0 :(得分:9)
使用Jenkins可以通过多种方式实现这一目标。
multi-SCM plugin将允许 - 顾名思义 - 在单个作业中包含多个源存储库。
您可以定义相互触发的n
个作业(即彼此依赖)。您可以在Build Triggers
>下找到此信息。 Build after other projects are built
。
还可以选择控制下游作业的主作业。您会在Post-build Actions
>下找到此选项。 Build other projects
。
关于构建触发,您可以使用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。您可以使用它在一个主项目中分层运行子项目构建。