仅在更改作业scm文件夹中的特定子文件夹时触发Jenkins作业

时间:2011-11-07 14:38:44

标签: teamcity jenkins

我正在将持续集成系统从Teamcity迁移到Jenkins。我们为我们所有的项目都有一个单独的svn存储库:

project/dev_db_build (folder)
project/module1 (folder)
project/module2 (folder)
projets/pom.xml

为了在CI服务器上构建数据库,我使用url project / dev_db_build并且可以在发生更改时使用此URL来触发构建。

对于构建应用程序,我使用url项目/所以如果我轮询它并且对dev_db_build进行更改应该忽略并在db_build成功后触发应用程序构建。

在团队中,我使用了“触发模式”。但是在詹金斯有很多触发插件https://wiki.jenkins-ci.org/display/JENKINS/Plugins#Plugins-Buildtriggers - 我调查了其中的一些并且找不到合适的插件。

2 个答案:

答案 0 :(得分:9)

理想情况下,您应该使用@Mike建议的提交后挂钩,而不是轮询。否则,在配置Jenkins作业时,在“源代码管理”下选择“Subversion”,会出现一个高级按钮。单击此按钮会显示许多选项,包括“排除的区域”

  

如果设置,并且Jenkins设置为轮询更改,Jenkins将忽略   确定构建时,此列表中的任何文件和/或文件夹   需要被触发。每个排除使用正则表达式模式   匹配,必须用新行分隔。

     

/中继/ MyApp的/ SRC /主/网络/.*。HTML

     

/中继/ MyApp的/ SRC /主/网络/.*。JPEG

     

/中继/ MyApp的/ SRC /主/网络/.*。GIF

     

上面的例子说明了如果只有html / jpeg / gif文件   一直致力于SCM的构建不会发生。更多信息   可以找到正则表达式here

在您的情况下,您可以将“排除的区域”设置为

/project/dev_db_build/.*

答案 1 :(得分:2)

您是否有能力编辑Subversion挂钩?我建议您不要让Jenkins服务器轮询SVN,而是通过post-commit挂钩让SVN调用Jenkins,以便在开发人员提交时自动启动构建。这样可以减轻Jenkins和SVN服务器的负载,并且在构建开始之前轮询间隔不会等待很长时间。