0

我有 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. 我在 projectA 中更改了一些内容并创建了 PR
  2. Webhook 触发所有管道:root、projectA 和 projectB
  3. 根管道通知对 projectA 进行了更改并触发 projectA 管道

所以在跑步中我有:

  • 由 webhook 触发的一次根管道运行
  • 一次运行项目由 webhook 触发的管道
  • 由 webhook 触发的 projectB 管道的一次运行
  • 一次运行项目由上游触发的管道

我想拥有:

  • 由 webhook 触发的一次根管道运行
  • 一次运行项目由上游触发的管道

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

有谁知道该怎么做?

4

1 回答 1

0

我找到了一个解决方案:

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

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

于 2022-02-22T17:06:41.890 回答