有没有办法让jenkins像git那样,在svn项目的所有分支中查找更改?apachepig piggybank是由社区提供的一组类,并将exntesion添加到特定版本的apachepig中。pig本身是通过maven发布的,所以获得它的特定版本从来都不是问题。另一方面,piggybank没有版本控制,但是它所依赖的每个pig版本都有分支。我想让Jenkins观察,然后建立,为所有分支在Pigsvn库。我真的不想一直盯着piggybank的新版本,为每个分支添加一个jenkins工作。
js4nwp541#
您可以将多个存储库位置添加到单个项目中,并将它们 checkout 到不同的目录中。不过,您仍然需要手动添加所有分支。
mftmpeh82#
下面是一些关于@lars答案的阐述:创建触发器作业(我们称之为触发器),将每个分支 checkout 到其工作区中的不同目录中(顺便说一句,您可以在工作区中使用 --depth=empty 选项,则subversion插件仍会检测到更改,但不会 checkout 代码(以防有很多分支)。然后你可以使用 SNV_REVISION_n (其中 n 为1、2等。;请参阅subversion插件文档)在触发器作为构建步骤调用的脚本中检查哪个分支(或多个分支)已真正更改(当然,您需要存储结果,以便在下一个触发器构建中使用)。然后只创建一个以分支名称为参数的作业(我们称之为worker)。触发器将通过带有wget的http或带有适当参数(例如分支名称)的curl调用worker。或者,您可以为每个分支设置一个触发器作业,并使用参数化触发器插件调用worker。缺点是您需要为每个分支创建一个触发器,并且您将有更多的svn轮询(除非您使用svnpush)。另一方面,你不需要写一个脚本检查哪个分支已更改,您可以使用subversion插件将更改集从触发器传播到工作进程(并且仅与该分支相关的更改)。worker将手动更新/ checkout 作为参数传递给它的分支( svn co 等等)和建造。这样你就只有一份工作可以完成实际的繁重工作(这意味着更容易维护,更少的bug等等)我在构建系统中使用了这种方法。因为我们一次没有超过2个活动分支,所以我使用每分支触发的方法。
--depth=empty
SNV_REVISION_n
n
svn co
2条答案
按热度按时间js4nwp541#
您可以将多个存储库位置添加到单个项目中,并将它们 checkout 到不同的目录中。不过,您仍然需要手动添加所有分支。
mftmpeh82#
下面是一些关于@lars答案的阐述:
创建触发器作业(我们称之为触发器),将每个分支 checkout 到其工作区中的不同目录中(顺便说一句,您可以在工作区中使用
--depth=empty
选项,则subversion插件仍会检测到更改,但不会 checkout 代码(以防有很多分支)。然后你可以使用
SNV_REVISION_n
(其中n
为1、2等。;请参阅subversion插件文档)在触发器作为构建步骤调用的脚本中检查哪个分支(或多个分支)已真正更改(当然,您需要存储结果,以便在下一个触发器构建中使用)。然后只创建一个以分支名称为参数的作业(我们称之为worker)。触发器将通过带有wget的http或带有适当参数(例如分支名称)的curl调用worker。
或者,您可以为每个分支设置一个触发器作业,并使用参数化触发器插件调用worker。缺点是您需要为每个分支创建一个触发器,并且您将有更多的svn轮询(除非您使用svnpush)。另一方面,你不需要写一个脚本
检查哪个分支已更改,您可以使用subversion插件将更改集从触发器传播到工作进程(并且仅与该分支相关的更改)。
worker将手动更新/ checkout 作为参数传递给它的分支(
svn co
等等)和建造。这样你就只有一份工作可以完成实际的繁重工作(这意味着更容易维护,更少的bug等等)
我在构建系统中使用了这种方法。因为我们一次没有超过2个活动分支,所以我使用每分支触发的方法。