提问人:sbi 提问时间:5/6/2014 最后编辑:sbi 更新时间:5/6/2014 访问量:1430
在 Jenkins 中,如何构建在特定 SVN 存储库 URL 下创建的任何分支?
In Jenkins, how to build any branch created under a specific SVN repository URL?
问:
我需要设置一个作业,用于构建到特定 SVN 存储库文件夹的主干的任何副本。每当有人在该特定文件夹中创建新分支时,都应签出、生成该分支并运行测试。分支将累积在该特定文件夹中,并且测试需要相当长的时间(其中包括它们使用外部硬件),因此每次添加新分支时都只构建在那里找到的每个分支是不可行的。相反,作业只需构建新添加的分支。
所以我需要的是这个:
- 监视 URL () 的更改
an_svn_repo.com/path_to_project/some_branch_folder
- 如果已在 URL () 下创建了新文件夹,请检出新文件夹 (,但不是
an_svn_repo.com/path_to_project/some_branch_folder/new_stuff
some_branch_folder/new_stuff
some_branch_folder
) - 执行该文件夹中的构建脚本
我有一些关于如何处理这个问题的想法,但它们有很大的不同,我不知道它们有多可行,所以我想听听你的意见。
一种方法是检查哪个子文件夹具有最新的更改,并在该子文件夹中调用构建脚本。(但是,如果几乎同时创建两个分支呢?另一种可能是在某个地方存储一些关于已构建的分支的信息,并且只构建新的分支。(但我不知道 Jenkins 或插件是否有任何方法可以在作业调用之间存储信息。此外,成功构建分支可以在该分支上设置修订属性,然后 Jenkins 可以忽略该属性。或者我使用构建参数并从脚本开始作业。
我可以保留一个脚本来执行必要的工作,但如果可能的话,最好在 Jenkins 本身中完成大部分工作。an_svn_repo.com/path_to_project/some_branch_folder
你有什么想法?
答:
查看 Build with Parameters 插件。我以前用它来做这样的事情。我们有一个网站坚持每个功能和错误修复必须是不同的分支,因此我们定义了一个分支构建,该构建使用“使用参数构建”插件来指定要构建的分支。
你所要做的就是定义一个 Subversion post-commit 钩子,当项目所在的分支被创建或修改时,它会触发项目的构建。这是一个相当直接的触发因素。
评论
+1
:(
/buildWithParameters?BRANCH=new_stuff
评论