3

有没有办法让詹金斯在 SVN 项目的所有分支中寻找变化,就像它对 Git 所做的那样?

Apache Pig Piggybank 是一组由社区贡献的类,并将扩展添加到特定版本的 Apache Pig。Pig 本身是通过 Maven 发布的,因此获得它的特定版本从来都不是问题。另一方面,Piggybank 没有版本控制,但是每个版本的 Pig 都有其依赖的分支。

我想让 Jenkins 监视,然后为 Pig SVN 存储库中的所有分支构建。我真的宁愿不必关注 Piggybank 的新版本,并为每个分支添加一个 Jenkins 工作。

4

2 回答 2

2

这是@Lars回答的一些详细说明:

创建触发器作业(我们称之为Trigger),它将检查每个分支到其工作区中的不同目录(顺便说一下,您可以使用--depth=empty选项在工作区中手动创建这些目录,然后 Subversion 插件仍会检测到更改,但不会如果您有很多分支,请检查代码以节省空间)。

然后,您可以在Trigger作为构建步骤调用的脚本中使用SNV_REVISION_n(其中n1、2 等;请参阅Subversion Plugin Documentation )来检查哪个(或多个)分支确实发生了变化(当然,您需要存储结果,将在下一个触发器构建中使用)。

然后您只创建一个将分支名称作为参数的作业(我们称之为Worker )。触发器将使用 wget 或 curl 使用适当的参数(例如分支名称)通过 http调用Worker 。

或者,您可以为每个分支创建一个Trigger作业,并使用Parameterized Trigger Plugin调用Worker。缺点是您需要为每个分支创建一个触发器,并且您将拥有更多的 SVN 轮询(除非您使用SVN push)。另一方面,您不需要编写 检查哪个分支已更改的脚本,并且您可以使用Blame Subversion 插件将变更集从触发器传播到Worker(并且仅与该分支相关的更改)。

Worker将手动更新/签出作为参数传递给它的分支(svn co等)并构建。

这样一来,您只有一项工作可以完成实际的繁重工作(这意味着更容易维护、更少错误等)

我在我们的构建系统中使用了这种方法。由于我们一次没有超过 2 个活动分支,因此我使用触发器每个分支的方法。

于 2012-04-16T10:21:07.007 回答
1

您可以将多个存储库位置添加到单个项目并将它们签出到不同的目录。不过,您仍然必须手动添加所有分支。

于 2012-04-16T09:33:31.203 回答