如何仅使用Jenkinsfile更改特定子目录中的文件时才能限制Jenkins管道项目的范围?

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

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


JenkinsfilesubA具有以下配置:

checkout scm: [
    $class: 'GitSCM',
    branches: [[name: '*/master']],
    userRemoteConfigs: [[url: 'https://[path]/parent.git']],
    extensions: [[
        $class: 'PathRestriction', includedRegions: 'subA/.*'
    ]]
]


JenkinsfilesubB与之类似,唯一的区别是它已将subB指定为includedRegions

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

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

詹金斯版本:2.3



注意:
在旧的Jenkins(版本1.649)GUI中分别将设置Additional Behaviours-> Polling ignores commits in certain paths-> Included Regions设置为subA/.*subB/.*会导致预期的行为。



更新:

excludedRegions添加到Jenkins文件中,例如

checkout scm: [
    $class: 'GitSCM',
    branches: [[name: '*/master']],
    userRemoteConfigs: [[url: 'https://[path]/parent.git']],
    extensions: [[
        $class: 'PathRestriction', excludedRegions: '', includedRegions: 'subA/.*'
    ]]
]


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

最佳答案

this issue所示,尚不支持此功能。

10-08 03:37