有没有办法让Jenkins在SVN项目的所有分支中查找更改,就像使用Git一样?
Apache Pig Piggybank是一组由社区贡献的类,并为特定版本的Apache Pig添加了exntesion。 Pig本身是通过Maven发布的,因此获取它的特定版本绝不是问题。另一方面,Piggybank没有版本化,但每个版本的Pig都有分支依赖。
我想让Jenkins观察,然后构建Pig SVN存储库中的所有分支。我真的不需要关注Piggybank的新版本,并为每个分支添加Jenkins工作。
答案 0 :(得分:2)
以下是@Lars回答的一些细节:
创建触发器作业(让我们称之为触发器),将每个分支检出到其工作空间中的不同目录中(顺便说一句,您可以在工作区中使用{{1}手动创建这些目录}选项,然后Subversion插件仍然会检测到更改,但不会检查代码,以便在您拥有大量分支时节省空间。)
然后,您可以在 Trigger 作为构建调用的脚本中使用--depth=empty
(其中SNV_REVISION_n
为1,2等;请参阅Subversion Plugin Documentation)检查哪些分支(或多个分支)确实已更改(您需要存储结果,当然,要在下一个触发器构建中使用)。
然后,您只创建一个以分支名称作为参数的作业(让我们称之为 Worker )。 触发器将通过带有wget或curl的http调用 Worker 并使用适当的参数(例如分支名称)。
或者,您可以为每个分支设置触发器作业,并使用Parameterized Trigger Plugin调用 Worker 。缺点是你需要为每个分支创建一个 Trigger ,你将有更多的SVN轮询(除非你使用SVN push)。另一方面,您不需要编写一个脚本 检查哪个分支已更改,您可以使用Blame Subversion Plugin将变更集从触发器传播到 Worker (并且只更改与分支相关的更改)。
Worker 将手动(n
等)和构建作为参数更新/签出传递给它的分支。
通过这种方式,您只能完成一项实际繁重的工作(这意味着更容易维护,减少错误等)。
我在构建系统中使用此方法。由于我一次没有超过2个活动分支,因此我使用每个分支触发方法。
答案 1 :(得分:1)
您可以将多个存储库位置添加到单个项目中,并将它们签出到不同的目录中。您仍然需要手动添加所有分支。