Jenkins 从同一提交多分支管道开始重复构建

Jenkins starts Duplicate builds from same commit Multibranch pipeline

我们看到我们的 Jenkins 多分支管道的多个构建被 Bitbucket 中的同一个合并提交触发。

一个构建被标记为触发:"Branch event at "

其他作者:"commit notification "

我们在插件中设置了 Jenkins url

Bitbucket Server Webhook to Jenkins

并在 Jenkinsfile 设置中有一个我们的触发器,如下所示:

triggers {
    pollSCM ""
    cron "H 0 * * *"
}

似乎有一些旧的 questions 不幸的是没有具体的答案。

看起来 Branch API PluginGit client plugin 都在向 Jenkins 发送触发构建的事件。

我们通过抑制自动触发解决了这个问题。

这可以在 UI 中完成,只需转到您的工作,从左侧选择配置,然后添加 属性

Suppress automatic SCM triggering.

或者,对于代码解决方案(我最终使用的),将其添加到 seedjob.groovy 中,如下所示:

multibranchPipelineJob("${service.name}-build") {
    // ... unrelated code omitted

    configure { project ->
        project.remove(project / 'sources' / 'data' / 'jenkins.branch.BranchSource' / 'strategy' / 'properties')
        def s = project / 'sources' / 'data' / 'jenkins.branch.BranchSource' / 'strategy' {
            properties(class: 'java.util.Arrays$ArrayList') {
                a(class: 'jenkins.branch.NoTriggerBranchProperty') {
                    'jenkins.branch.NoTriggerBranchProperty' ''
                }             
            }
        }
    }

}

更新:

Julian 的答案似乎有效,但有一个错误,它不会自动触发对功能分支的推送。在我们的 Jenkinsfile 中,我们添加了:

properties([overrideIndexTriggers(true)])

尽管我们的 seedjob 中有 NoTriggerBranchProperty,这确保 git 提交仍然触发构建。

我们在使用 Bitbucket 与 Jenkins 集成时遇到了这个问题。我们的问题是,在 Bitbucket webhook 上,我们选择了来自推送和 PR 的通知。此配置在创建 PR 时创建了一个具有分支名称的作业和一个名为 PR-XXX 的第二个作业。

也许是这个原因?