在Jenkins工作区文件夹中,仅在特定子文件夹发生更改时触发Jenkins任务

10

我正在将持续集成系统从Teamcity迁移到Jenkins。我们有一个单独的svn代码库用于存放所有项目,如下所示:

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

我在CI服务器上使用项目/dev_db_build的URL用于构建数据库,如果有更改,则可以轮询此URL以触发构建。

我使用项目/ URL来构建应用程序。因此,如果我轮询它并且对dev_db_build进行了更改,则应忽略应用程序构建,并在成功构建db_build后再次触发它。

在TeamCity中,我使用“触发器模式”来实现此功能。但是,在Jenkins中,有很多触发插件https://wiki.jenkins-ci.org/display/JENKINS/Plugins#Plugins-Buildtriggers - 我查看了其中一些插件,但没有找到合适的插件。

2个回答

10
理想情况下,你应该像 @Mike 建议的那样使用后提交钩子而不是轮询。否则,在配置 Jenkins 作业时,在“源代码管理”下选择“Subversion”,会出现一个高级按钮。单击此按钮将显示许多选项,包括“排除区域”。
如果设置并且 Jenkins 被设置为轮询更改,Jenkins 将忽略此列表中的任何文件和/或文件夹以确定是否需要触发构建。每个排除都使用正则表达式模式匹配,并且必须用新行分隔。
例如上面的示例说明,仅当提交到 SCM 的文件是 html/jpeg/gif 文件时才不会进行构建。有关正则表达式的更多信息可以在这里找到。
在你的情况下,你需要将“排除区域”设置为类似以下的内容:
/project/dev_db_build/.*

2

您是否有编辑Subversion钩子的能力?建议您通过post-commit钩子使SVN调用Jenkins来自动启动构建而不是让Jenkins服务器轮询SVN。 这样做可以减少对Jenkins和SVN服务器的负载,同时在提交之前不必等待轮询间隔多长时间才能启动构建。


非常感谢。不幸的是,目前无法使用提交后钩子。 - Ivan Sopov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接