5

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

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

项目的构建应包括两个子项目的构建结果。为了使我们的构建更快,我想仅在分别更改 SVN 的情况下运行 subproject1 的构建(在 svn://ip/svn/trunk/subproject1 中)。同样对于子项目2

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

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

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

4

4 回答 4

9

使用 Jenkins 可以通过多种方式实现此目的。

  1. 顾名思义,多 SCM 插件将允许在单个作业中包含多个源存储库

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

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

关于构建触发,您可以使用该poll SCM选项。这不是最有效的方法,但您的选择可能会受到 SVN 而不是 Git 的限制。

aggregate downstream test results我刚刚注意到您还提到了整理所有构建的结果 - 您可以通过单一工作或使用Post-build Actions.

最终,您需要明确您的构建策略。在我看来,如果对任一子项目进行了更改,您想确保没有任何损坏。我不确定 multi-SCM 插件如何处理轮询多个存储库的概念,因此您可能需要将其考虑在内。

我想我给了你几个尝试的选择;让我知道你是怎么办的。

于 2013-02-27T10:43:07.517 回答
2

这是一个旧线程(18 个月),但几天前 Jenkins 多作业插件发布了一个新版本,其中包含一个选项,该选项允许仅当自上次构建以来 scm 发生更改时才触发构建:

这是仅当 SCM 更改时的构建

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

于 2014-11-20T07:57:42.290 回答
1

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

于 2013-07-29T12:02:09.200 回答
0

我不知道如何使用 SVN 进行设置,但是使用GIT,您可以在源代码管理步骤中设置附加行为。

选择Polling ignores commits in certain paths,然后设置Included Regions。此设置可以过滤同一 git 存储库中的其他子项目提交。

还要在Build Triggers步骤上进行设置,勾选Poll SCM并将Schedule留空。

如果要设置自动部署,您可能需要在 git 存储库端设置web hook 。

Jenkins 版本是 2.32 和Jenkins Git 插件

于 2017-02-24T03:45:31.330 回答