詹金斯-关注SVN分支机构

詹金斯-关注SVN分支机构,svn,branch,jenkins,apache-pig,Svn,Branch,Jenkins,Apache Pig,有没有一种方法可以让Jenkins在SVN项目的所有分支中查找更改,就像在Git中一样 ApachePig Piggybank是由社区提供的一组类,并将exntesion添加到ApachePig的特定版本中。Pig本身是通过Maven发布的,所以获得它的特定版本从来都不是问题。另一方面,Piggybank没有版本控制,但是它所依赖的每个Pig版本都有分支 我想让Jenkins观察并构建Pig SVN存储库中的所有分支。我真的不想关注Piggybank的新版本,为每个分支添加Jenkins作业。您

有没有一种方法可以让Jenkins在SVN项目的所有分支中查找更改,就像在Git中一样

ApachePig Piggybank是由社区提供的一组类,并将exntesion添加到ApachePig的特定版本中。Pig本身是通过Maven发布的,所以获得它的特定版本从来都不是问题。另一方面,Piggybank没有版本控制,但是它所依赖的每个Pig版本都有分支


我想让Jenkins观察并构建Pig SVN存储库中的所有分支。我真的不想关注Piggybank的新版本,为每个分支添加Jenkins作业。

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

这里有一些关于@Lars answer的详细说明:

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

然后,您可以在触发器作为构建步骤调用的脚本中使用
SNV\u REVISION\n
(其中
n
为1、2等;请参阅),以检查哪个分支(或多个分支)确实发生了更改(当然,您需要存储结果,以便在下一个触发器构建中使用)

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

或者,您可以为每个分支创建一个触发器作业,并使用调用Worker。缺点是您需要为每个分支创建一个触发器,并且您将有更多的SVN轮询(除非您使用)。另一方面,您不需要编写
检查已更改的分支,您可以使用该分支将更改集从触发器传播到工作进程(并且仅与该分支相关的更改)

工人将手动更新/签出作为参数传递给它的分支(
svn co
等)并生成

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

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