如何禁用Jenkins添加GitHub组织后自动触发的项目构建
如何在Jenkins中导入GitHub组织项目但不自动触发初始构建?
我完全懂你这个痛点——刚启动Jenkins就批量导入GitHub组织项目,结果所有项目齐刷刷自动构建,直接把构建队列堵几个小时,太影响使用了。咱们可以通过调整你现有的初始化脚本,轻松解决这个问题,核心是从两个地方切断初始构建的触发:
问题根源分析
你的脚本里有两个关键操作会触发自动构建:
- 最后调用的
folder.scheduleBuild(0)会强制组织文件夹立即执行扫描,扫描到的所有分支/PR都会触发构建 - 默认的
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
相关产品推荐
相关产品推荐

