Repository navigation
ci: run the merge queue build in its own reusable workflow - #289
Conversation
Moves the self-hosted merge_group job into queue-build.yml, which queue.yml calls, so the rind-queue runner group can later admit that workflow alone at refs/heads/main. A Queue job on a hosted runner reports the build's result under the context main's ruleset requires. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nner group Records the 2026-11-03 decision to restrict each queue runner group to a reusable build workflow at refs/heads/main, and takes its first step here and in moq-dev/rind#289 and moq-dev/rust2#536. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. WalkthroughThe merge-group build now runs through a reusable workflow that checks out the repository and runs the CI gate on the self-hosted runner. The required Merge Risk:
|
Problem
The
rind-queuerunner group admits any workflow in moq-dev/rind, so a PR's own workflow, such as an approved fork run, could reach the self-hosted runner. GitHub matches a runner group's selected workflow by its exact ref with no wildcard, and a merge group runsqueue.ymlfrom its owngh-readonly-queue/main/pr-<n>-<sha>branch, so the group can't be restricted toqueue.ymlitself.Approach
First step of the reusable-workflow restriction the maintainer picked on 2026-11-03 (moq-dev/quest#439, quest runners.md):
.github/workflows/queue-build.yml(on: workflow_call). Its job runs only when the caller's event ismerge_group, so a pull request's workflow that calls it still gets no runner.queue.ymlcalls it by its local path for now, so this PR's own merge group runs the new file.Queue build / Build, so a newQueuejob on a hosted runner reports the build's result under the context main's ruleset requires. It runs withalways()so a failed or cancelled build fails the context rather than skipping it; it skips on pull requests as before.Next, once this is on main: switch the call to
moq-dev/rind/.github/workflows/queue-build.yml@main(a merge group calling@mainbefore the file lands would find no workflow), then the maintainer restricts the group to that workflow atrefs/heads/main.Impact
No public API change. The required
Queuecontext keeps its name; the build now also shows asQueue build / Build.Alternatives
Queue build / Buildin the ruleset instead of a reporting job: needs a ruleset change timed with the workflow change, and the PR-side skip andworkflow_dispatchreport would need the new name too.Follow-ups
The
@mainswitch and the restriction, tracked in moq-dev/quest's runners quest.Validation
just check origin/mainpasses, including actionlint.Review
Codex (
quest review, gpt-6.1-sol, medium), round 1 on 2a1dbe9 against origin/main bd5066f: no findings.🤖 Generated with Claude Code
(Written by Claude Opus 5.5)