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

如何通过Groovy配置Jenkins多分支任务定时触发?触发器未生效求助

解决Jenkins多分支流水线每40分钟触发一次的问题

你的问题出在使用了普通的TimerTrigger,而Jenkins多分支流水线属于文件夹类型项目,需要使用专门的PeriodicFolderTrigger来配置定期扫描分支并触发构建。以下是修正后的Groovy脚本:

import com.cloudbees.hudson.plugins.folder.*
import com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy
import com.cloudbees.jenkins.plugins.bitbucket.*
import jenkins.branch.*
import jenkins.scm.impl.trait.*
import org.jenkinsci.plugins.workflow.multibranch.*
import jenkins.*
import jenkins.model.*
import hudson.*
import hudson.model.*

def jobName = "PipelineBuild"
def bitbucketUrl = "https://bitbucket.com"
def credentialIdForBitbucket = "12346790"
def repositoryName = "ApplicationRepo"
def projectOwner = "Loop"
def cronExpression = "H/40 * * * *" // 每40分钟执行一次

def multibranch = Jenkins.instance.getItemByFullName(jobName, WorkflowMultiBranchProject)
if (!multibranch) {
    multibranch = Jenkins.instance.createProject(WorkflowMultiBranchProject, jobName)
}

def branch = new BitbucketSCMSource(projectOwner, repositoryName)
branch.credentialsId = credentialIdForBitbucket
branch.serverUrl = bitbucketUrl
branch.traits = [
    new BranchDiscoveryTrait(3), // 扫描所有分支
]

multibranch.getProjectFactory().setScriptPath("ServerApiJenkinsBuild")

branchsource = new BranchSource(branch)
multibranch.setSourcesList([branchsource])
multibranch.setDescription("")
multibranch.setDisplayName(jobName)
multibranch.setOrphanedItemStrategy(new DefaultOrphanedItemStrategy(true, "30", "30"))

// 移除已存在的同类型触发器,避免重复添加
multibranch.getTriggers().each { trigger ->
    if (trigger instanceof PeriodicFolderTrigger) {
        multibranch.removeTrigger(trigger.getClass())
    }
}

// 添加多分支项目专用的周期扫描触发器
def periodicTrigger = new PeriodicFolderTrigger(cronExpression)
// 开启扫描后自动触发分支构建
periodicTrigger.setTriggerBuilds(true)
multibranch.addTrigger(periodicTrigger)

multibranch.save()
Jenkins.instance.reload()

Thread.start {
    sleep 3000 // 等待3秒后触发一次初始扫描
    multibranch.scheduleBuild()
}

关键修正说明:

  • 替换TimerTrigger为PeriodicFolderTrigger:这是Jenkins文件夹/多分支项目专属的周期触发器,负责定期扫描分支变更并触发对应构建。
  • 启用setTriggerBuilds(true):确保扫描分支后自动触发构建,而不只是更新分支列表。
  • 清理旧触发器:避免多次执行脚本后添加重复触发器导致异常。

验证步骤:

  1. 执行脚本后进入多分支流水线配置页,查看「Scan Multibranch Pipeline Triggers」模块,确认已配置H/40 * * * *的定时规则。
  2. 可手动触发一次扫描,或等待40分钟,确认分支项目会自动执行构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:38:35