在Jenkins中,如何构建在特定SVN存储库URL下创建的任何分支?

时间:2014-05-05 16:34:05

标签: svn jenkins continuous-integration

我需要设置一个作业,构建对特定SVN存储库文件夹进行的主干的任何副本。每当某人在该特定文件夹中创建新分支时,该分支应该被检出,构建并运行测试。分支将累积在该特定文件夹中,并且测试需要相当长的时间(其中它们使用外部硬件),因此每次添加新分支时只构建在那里找到的每个分支是不可行的。相反,作业必须只构建新添加的分支。

所以我需要的是:

  • 监控网址(an_svn_repo.com/path_to_project/some_branch_folder)进行更改
  • 如果在网址(an_svn_repo.com/path_to_project/some_branch_folder/new_stuff)下创建了新文件夹,请查看新文件夹some_branch_folder/new_stuff,但不是some_branch_folder
  • 在该文件夹中执行构建脚本

我对如何处理这个问题有一些想法,但它们却截然不同,我不知道它们有多可行,所以我希望你对此有所了解。

一种方法是检查哪个子文件夹具有最新的更改,并在该文件夹中调用构建脚本。 (但是如果几乎同时创建两个分支怎么办?)另一个可能是存储一些关于已经构建了分支的信息并且只构建新分支。 (但我不知道Jenkins或插件是否有任何方法可以在作业调用之间存储信息。)此外,成功构建分支可以在该分支上设置修订属性,然后Jenkins可以忽略该属性。或者我使用构建参数并从脚本启动作业。

我可以在an_svn_repo.com/path_to_project/some_branch_folder下保留一个脚本来完成必要的工作,但是如果可能的话,在Jenkins本身做大部分工作似乎更好。

你的想法是什么?

1 个答案:

答案 0 :(得分:2)

查看Build with Parameters插件。之前我曾经用过这样的事情。我们有一个网站坚持每个功能和错误修复都必须是一个不同的分支,所以我们定义了一个分支构建,它使用 Build with Parameters 插件来指定分支建立。

您所要做的就是定义一个Subversion post-commit钩子,该钩子在创建或修改它所在的分支时触发项目的构建。这是一个相当直接的触发器。