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

如何禁用Jenkins添加GitHub组织后自动触发的项目构建

如何在Jenkins中导入GitHub组织项目但不自动触发初始构建?

我完全懂你这个痛点——刚启动Jenkins就批量导入GitHub组织项目,结果所有项目齐刷刷自动构建,直接把构建队列堵几个小时,太影响使用了。咱们可以通过调整你现有的初始化脚本,轻松解决这个问题,核心是从两个地方切断初始构建的触发:

问题根源分析

你的脚本里有两个关键操作会触发自动构建:

  1. 最后调用的folder.scheduleBuild(0)会强制组织文件夹立即执行扫描,扫描到的所有分支/PR都会触发构建
  2. 默认的BranchDiscoveryTrait和OriginPullRequestDiscoveryTrait会在发现新分支/PR时自动触发初始构建

修改后的完整脚本

直接替换你现有的createOrganisationFolder函数,同时移除触发立即构建的代码:

void createOrganisationFolder(def config) {
    def folder = jenkins.createProject(OrganizationFolder, config.name)
    folder.displayName = config.displayName
    folder.description = config.description

    GitHubSCMNavigator navigator = new GitHubSCMNavigator(config.name)
    navigator.credentialsId = config.project.scanCredentials
    navigator.apiUri = lookupApiUri(config.project.apiEndpoint)

    navigator.traits = [
        new jenkins.scm.impl.trait.WildcardSCMSourceFilterTrait(config.project.repositoryNamePattern, ''),
        new jenkins.scm.impl.trait.RegexSCMHeadFilterTrait('.*'),
        // 禁用分支的初始自动构建
        new BranchDiscoveryTrait(3, false),
        // 禁用PR的初始自动构建
        new OriginPullRequestDiscoveryTrait(3, false),
    ]

    folder.navigators.replace(navigator)
    jenkins.save()

    // 移除这行强制立即构建的代码
    // folder.scheduleBuild(0)
}

关键修改说明

  • 移除folder.scheduleBuild(0):这行代码会让组织文件夹在创建后立刻执行扫描,进而触发所有项目的构建。删掉它之后,组织文件夹会按照Jenkins默认的扫描周期(通常1小时)执行第一次扫描,不会在实例启动时立刻触发批量构建。
  • 调整Trait构造参数:BranchDiscoveryTrait和OriginPullRequestDiscoveryTrait都有一个重载构造函数,第二个参数triggerBuild设为false时,Jenkins在发现新分支/PR时就不会自动触发初始构建了。

后续构建触发配置

如果之后需要让项目在代码变更时自动构建,你有两种选择:

  • 在项目的Jenkinsfile中添加triggers配置,比如:
    triggers {
      githubPush()
    }
    
  • 在GitHub组织文件夹的配置中开启Webhook触发,这样GitHub上的代码变更会主动通知Jenkins触发构建,而不是依赖定时扫描。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:57:30