在Jenkinsfile中配置includedRegions?

时间:2016-05-18 08:58:49

标签: jenkins jenkinsfile

如果使用Jenkinsfile更改特定子目录中的文件,我怎样才能将Jenkins管道项目的范围限制为仅构建?

我有一个包含两个目录的Git存储库。每个目录都包含一个单独的子项目,我想使用Jenkinsfile由Jenkins分别构建每个子项目。该项目具有以下文件结构:

parent
 |
 +- subA
 |   |
 |   + Jenkinsfile
 |   + more files related to sub project A
 |
 +- subB
     |
     + Jenkinsfile
     + more files related to sub project B

Jenkinsfile的{​​{1}}具有以下配置:

subA

checkout scm: [ $class: 'GitSCM', branches: [[name: '*/master']], userRemoteConfigs: [[url: 'https://[path]/parent.git']], extensions: [[ $class: 'PathRestriction', includedRegions: 'subA/.*' ]] ] 的{​​{1}}类似,唯一的区别是它已将Jenkinsfile指定为subB

在Jenkins服务器中,我创建了两个管道项目,并分别将它们指向每个subB。如果在文件夹includedRegions中更改了文件,则会触发Jenkins管道项目A,如果在文件夹Jenkinsfile中更改了文件,则会触发Jenkins管道项目B,这是我所期望的。

问题是如果在subA中更改了文件,则会触发Jenkins管道项目A,反之亦然。

Jenkins版本:2.3

注意: 配置设置subB - > subB - >旧Jenkins(版本1.649)GUI中分别Additional BehavioursPolling ignores commits in certain pathsIncluded Regions会产生预期的行为。

更新

subA/.*添加到Jenkins文件中,例如

subB/.*

不会改变行为。尽管只在一个子目录中更改了文件,但两个子项目仍在重建。

2 个答案:

答案 0 :(得分:2)

这不支持,因为this issue暗示。

答案 1 :(得分:0)

存在一个无法正常使用的问题:https://issues.jenkins-ci.org/browse/JENKINS-36195

它有一种解决方法,即禁用远程轮询([$ class:'DisableRemotePoll']):

checkout([$class: 'GitSCM',
  branches: [[name: "*/master"]],
  extensions: [
    [$class: 'PathRestriction', excludedRegions: '', includedRegions: '<fill me in with regex \n delimited, leave excludedRegions as empty>'],
    [$class: 'DisableRemotePoll']
  ],
  submoduleCfg: [],
  userRemoteConfigs: [[url: "<my git url>", credentialsId: "$GIT_KEY"]]])