如何防止 Webhook 触发作业
how to prevent triggering of job by Webhook
我有 git monorepo 存储库,里面有多个项目。所以我在这个 repo 中有以下 Jenkinsfiles 结构:
|-Jenkinsfile (root one)
|-projectA
| |-Jenkinsfile (for projectA)
| |- ... (project files)
|-projectB
|-Jenkinsfile (for projectB)
|- ... (project files)
在主根 Jenkinsfile 中,我有逻辑来检查 PR 更改的文件,然后在特定项目中的文件发生更改时触发项目管道。
而且我有 Webhook。
我的问题是所有这 3 个管道都是由 Webhook 触发的。所以我现在的状态是:
- 我更改了项目 A 中的一些内容并创建了 PR
- Webhook 触发所有管道:root、projectA 和 projectB
- 根管道注意到对 projectA 进行了更改并触发了 projectA 管道
所以在 运行s 我有:
- 一个 运行 由 webhook 触发的根管道
- 一个 运行 由 webhook 触发的 projectA 管道
- 一个 运行 由 webhook 触发的 projectB 管道
- 一个 运行 由上游触发的 projectA 管道
我想要:
- 一个 运行 由 webhook 触发的根管道
- 一个 运行 由上游触发的 projectA 管道
我无法更改 webhook 的性质,因为它是 monorepo,所以每次有人在任何项目中做任何事情时都会发送它。所以我需要防止 projectA 和 projectB 管道对传入的 webhook 做出反应。
有人知道怎么做吗?
我找到了解决方案:
multibranchPipelineJob(...) {
branchSources {
branchSource {
source {
...
}
strategy {
allBranchesSame {
props {
suppressAutomaticTriggering()
}
}
}
}
}
...
}
此设置阻止 webhook 触发器启动作业。
我有 git monorepo 存储库,里面有多个项目。所以我在这个 repo 中有以下 Jenkinsfiles 结构:
|-Jenkinsfile (root one)
|-projectA
| |-Jenkinsfile (for projectA)
| |- ... (project files)
|-projectB
|-Jenkinsfile (for projectB)
|- ... (project files)
在主根 Jenkinsfile 中,我有逻辑来检查 PR 更改的文件,然后在特定项目中的文件发生更改时触发项目管道。
而且我有 Webhook。
我的问题是所有这 3 个管道都是由 Webhook 触发的。所以我现在的状态是:
- 我更改了项目 A 中的一些内容并创建了 PR
- Webhook 触发所有管道:root、projectA 和 projectB
- 根管道注意到对 projectA 进行了更改并触发了 projectA 管道
所以在 运行s 我有:
- 一个 运行 由 webhook 触发的根管道
- 一个 运行 由 webhook 触发的 projectA 管道
- 一个 运行 由 webhook 触发的 projectB 管道
- 一个 运行 由上游触发的 projectA 管道
我想要:
- 一个 运行 由 webhook 触发的根管道
- 一个 运行 由上游触发的 projectA 管道
我无法更改 webhook 的性质,因为它是 monorepo,所以每次有人在任何项目中做任何事情时都会发送它。所以我需要防止 projectA 和 projectB 管道对传入的 webhook 做出反应。
有人知道怎么做吗?
我找到了解决方案:
multibranchPipelineJob(...) {
branchSources {
branchSource {
source {
...
}
strategy {
allBranchesSame {
props {
suppressAutomaticTriggering()
}
}
}
}
}
...
}
此设置阻止 webhook 触发器启动作业。