You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:无法为Multibranch Pipeline Job创建pollSCM触发器

错误原因

Multibranch Pipeline Job的Job DSL触发器上下文(MultibranchWorkflowTriggerContext)不支持直接调用pollSCM()方法——该方法仅适用于普通Pipeline或自由风格任务。多分支任务的SCM轮询需要使用适配的配置方式。

解决方案

方案1:使用Job DSL内置的periodicFolderTrigger

Multibranch任务本质属于Folder类型,Job DSL提供了periodicFolderTrigger来配置轮询逻辑,替换原有错误的triggers块即可:

#!/usr/bin/env groovy

multibranchPipelineJob('mb-build') {
    displayName('Multi Branch Build')

    orphanedItemStrategy {
        discardOldItems {
            daysToKeep(1)
            numToKeep(1)
        }
    }

    // 替换原pollSCM配置,用periodicFolderTrigger实现SCM轮询
    triggers {
        periodicFolderTrigger('H/2 * * * *') {
            triggers(['SCMTrigger'])
        }
    }

    factory {
        workflowBranchProjectFactory {
            scriptPath('Jenkinsfile')
        }
    }

    branchSources {
        branchSource {
            source {
                git {
                    id('some-id') 
                    remote('https://github.com/org/repo')
                    credentialsId('my-cred-here')
                }
            }
        }
    }

    configure {        
        def traitsBlock = it / sources / data / 'jenkins.branch.BranchSource' / source / traits
        traitsBlock << 'jenkins.plugins.git.traits.BranchDiscoveryTrait' {}
    }
}

方案2:通过configure块手动添加SCM触发器

如果需要自定义触发器的更多参数,可以直接通过configure块底层注入SCM触发器,删除原有的triggers块后修改配置:

#!/usr/bin/env groovy

multibranchPipelineJob('mb-build') {
    displayName('Multi Branch Build')

    orphanedItemStrategy {
        discardOldItems {
            daysToKeep(1)
            numToKeep(1)
        }
    }

    factory {
        workflowBranchProjectFactory {
            scriptPath('Jenkinsfile')
        }
    }

    branchSources {
        branchSource {
            source {
                git {
                    id('some-id') 
                    remote('https://github.com/org/repo')
                    credentialsId('my-cred-here')
                }
            }
        }
    }

    configure { node ->
        // 手动添加SCM轮询触发器
        node / triggers << 'hudson.triggers.SCMTrigger' {
            spec('H/2 * * * *')
            ignorePostCommitHooks(false)
        }
        // 保留原分支发现特性配置
        def traitsBlock = node / sources / data / 'jenkins.branch.BranchSource' / source / traits
        traitsBlock << 'jenkins.plugins.git.traits.BranchDiscoveryTrait' {}
    }
}

内容的提问来源于stack exchange,提问作者Sachin Sheelavant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:12:32