我在 Jenkins 2.1 多分支管道上苦苦挣扎,我从同一个 git 存储库构建了多个工件。一些工件是独立的,应该在其各自目录中的更改上触发构建。有些是依赖的,应该由先前的步骤/构建触发。
存储库有一个控制整个管道的 Jenkinsfile。Jenkins Multibranch Pipeline 作业触发所有更改(无其他行为)。
我看不到如何构建工件 A 以触发目录 dirA 中的更改。
位于 file:///repopath 的 git repo 中的 Jenkinsfile 如下所示:
node(){
stage 'Build A'
checkout([$class: 'GitSCM',
branches: [[name: '*/master']],
doGenerateSubmoduleConfigurations: false,
extensions: [
[$class: 'PathRestriction',
excludedRegions: '.*',
includedRegions: 'dirA/.*'],
[$class: 'RelativeTargetDirectory',
relativeTargetDir: 'sub']],
submoduleCfg: [],
userRemoteConfigs: [[url: 'file:///repopath']]])
sh './buildA.sh'
}
node(){
stage 'Build B'
...
}
...
这将始终触发 buildA.sh 的运行 :-(
我正在使用以下插件:
- Git客户端插件1.19.6
- Git 插件 2.4.4
- Git 服务器插件 1.6
- 管道 2.0
- 管道:API 2.0
- 管道:基本步骤 2.0
- 管道:构建步骤 2.0
- 管道:Groovy 2.1
- 管道:输入步骤 2.0
- 管道:工作 2.1
- 管道:多分支 2.3
- 管道:节点和进程 2.0
- 管道:REST API 插件 1.3
- 管道:SCM 步骤 2.0
- 管道:共享 Groovy 库 2.0
- 管道:阶段步骤 2.0
- 管道:舞台视图插件 1.3
- 管道:步骤 API 2.0
- 管道:支持 API 2.0