如何防止 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 触发的。所以我现在的状态是:

  1. 我更改了项目 A 中的一些内容并创建了 PR
  2. Webhook 触发所有管道:root、projectA 和 projectB
  3. 根管道注意到对 projectA 进行了更改并触发了 projectA 管道

所以在 运行s 我有:

我想要:

我无法更改 webhook 的性质,因为它是 monorepo,所以每次有人在任何项目中做任何事情时都会发送它。所以我需要防止 projectA 和 projectB 管道对传入的 webhook 做出反应。

有人知道怎么做吗?

我找到了解决方案:

multibranchPipelineJob(...) {
            branchSources {
                branchSource {
                    source {
                        ...
                    }
                    strategy {
                        allBranchesSame {
                            props {
                                suppressAutomaticTriggering()
                            }
                        }
                    }
                }
            }
            ...
        }

此设置阻止 webhook 触发器启动作业。