多年来我们一直在使用 bors-ng 进行合并队列,现在我们想迁移到 Github 合并队列。
我发现 GitHub 的文档很难理解,但据我所知,我需要执行以下操作:
例如
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))
这与我们的工作 bors-ng 设置非常相似(只是
branch_re=...
是 branch=['trying', 'staging']
)
为
main
分支添加分支保护规则并开启合并队列:
您只能添加最近通知 github 的必需检查。我只是写了一个小 python 脚本来做到这一点。
之后,在
main
分支保护规则中,将buildbot设置为必填检查。
根据这些文档。
例如在
.github/workflows/ci.yml
:
on:
pull_request:
merge_group:
单击“准备就绪后合并”按钮。
但问题是,github 从来没有创建分支供 CI 拾取,所以它就永远坐在那里。
谁能看出问题出在哪里吗?
编辑:还尝试从
main
中删除所需的状态检查并将其添加到 gh-readonly-queue/*
的新分支保护规则中。在这种设置下,githubdid创建了一个分支,并且buildbot确实构建了它。 Buildbot报失败,但是github还是合并了分支...我没明白。
这里的问题是 github 目前需要在单击合并按钮后引发 PR 时运行相同的 CI 检查集。
我们通过让 CI 系统针对所有“push”和“pull_request”事件运行来解决这个问题,但对于后者,让 CI 立即返回成功,而不实际运行任何 CI 测试。
我真的希望 github 将来能够改进这一点。