Jenkins从同一个提交Multibranch管道启动重复构建

时间:2018-01-17 16:08:19

标签: jenkins continuous-integration bitbucket-server

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

一个构建标记由:“分支事件”

触发

另一个是:“提交通知”

我们在插件中设置了Jenkins网址

  

Bitbucket Server Webhook to Jenkins

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

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

遗憾的是,似乎有一些旧的questions没有具体答案。

2 个答案:

答案 0 :(得分:1)

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

也许这就是原因?

答案 1 :(得分:0)

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

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

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

  

禁止自动SCM触发。

或者代码解决方案(我最终使用)将其添加到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' ''
                }             
            }
        }
    }

}

更新:

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

properties([overrideIndexTriggers(true)])

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