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

将Bors-ng迁移至GitHub合并队列对接自建Buildbot CI遇问题求助

GitHub Merge Queue 迁移异常排查方案

一、问题1:GitHub未生成gh-readonly-queue合并队列分支

排查与修复步骤:

  • 检查PR状态与前置检查:
    确保PR已标记为「准备就绪」(非草稿状态),且PR自身的所有必需检查项都已通过。GitHub仅会将符合条件的PR加入合并队列,才会生成临时分支。
  • 验证main分支保护规则的必需检查配置:
    进入仓库Settings > Branches > Branch protection rules,确认main分支的「Require status checks to pass before merging」列表中,已添加Buildbot的检查项,且该检查项的名称与Buildbot提交状态时使用的context完全一致。
  • 确认工作流触发规则有效性:
    检查.github/workflows/ci.yml的触发规则是否正确:
    on:
      pull_request:
      merge_group:
    
    同时确保工作流没有额外的if条件限制,导致merge_group事件无法触发。
  • 核对Buildbot分支监听配置:
    确认Buildbot的ChangeFilter中,branch_re正则^gh-readonly-queue/正确无误,REPOS变量指向目标仓库,且builderNames对应的构建脚本能正常执行。

二、问题2:Buildbot构建失败但GitHub仍合并分支

核心原因与修复:

  • 分支保护规则作用范围错误:
    gh-readonly-queue/*的分支保护规则不影响GitHub Merge Queue的合并决策——合并逻辑仅受**基准分支(main)**的保护规则约束。需删除为临时分支添加的保护规则,恢复main分支的正确配置。
  • 必需检查未关联到合并队列流程:
    在main分支的保护规则中,务必将Buildbot的检查项设为必需,且确保Buildbot会针对gh-readonly-queue开头的临时分支提交状态报告。若GitHub未收到该分支的检查状态,会默认认为检查通过或跳过,导致错误合并。
  • 验证Buildbot状态提交准确性:
    检查Buildbot是否向GitHub的临时分支(而非原PR分支)提交了正确的状态结果(success/failure),且提交的context名称与main分支保护规则中的必需检查名称完全匹配。

修正后的标准配置流程

  1. Buildbot合并队列分支配置(保持现有配置不变,确认正则与仓库参数正确):
    c['schedulers'].append(schedulers.SingleBranchScheduler(
                           name="simple-ghmq-branches-scheduler",
                           change_filter=util.ChangeFilter(
                               branch_re=re.compile("^gh-readonly-queue/"),
                                repository=REPOS,
                            ),
                            builderNames=["buildbot-build-script"],
                            treeStableTimer=TREE_STABLE_TIMEOUT))
    
  2. GitHub main分支保护规则:
    • 启用合并队列(Enable merge queue)
    • 勾选「Require status checks to pass before merging」,添加Buildbot检查项到必需列表
    • 按需勾选「Require branches to be up to date before merging」
  3. 工作流触发规则(保持现有配置):
    on:
      pull_request:
      merge_group:
    
  4. 测试流程:提交测试PR,确认PR检查通过后点击「准备就绪后合并」,验证GitHub生成临时分支、Buildbot触发构建、状态报告正确,且只有检查通过时才会合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:45:35