Skip to content

fix(ci): make merge queue lane build-only in build.yml - #826

Merged
castrojo merged 1 commit into
mainfrom
fix/ci/merge-group-build-only
Jul 19, 2026
Merged

fix(ci): make merge queue lane build-only in build.yml#826
castrojo merged 1 commit into
mainfrom
fix/ci/merge-group-build-only

Conversation

@castrojo

@castrojo castrojo commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Root cause

The merge queue has silently ejected every entry since 2026-07-06 (PRs #802, #815, #817, #824, #825 — nothing has merged in two weeks). common#660 added if: github.event_name != 'merge_group' to the Export image for scanning and Scan image for CVEs steps, but left these on != 'pull_request' (which matches merge_group):

  • Promote image to root storage — reads /tmp/scan-image.tar, which the skipped export never produced: open /tmp/scan-image.tar: no such file or directory (failing merge-group run)
  • Push image / Write digest / Upload digest / manifest job — these would push per-arch tags and re-sign :latest from a throwaway queue ref if the promote step hadn't failed first

Fix

Merge queue lane is now build-only: every push-lane step carries github.event_name != 'pull_request' && github.event_name != 'merge_group'. The queue verifies the combined commit builds; pushing, digests, manifests, and signing stay exclusive to the push/dispatch lanes.

Self-healing: merge_group runs execute the workflow from the merged ref, so this PR's own queue run uses the fixed YAML.

Skill update (same PR)

docs/skills/ci-tooling.md merge_group section extended with the build-only rule and the artifact-lane tracing checklist.

Validation

  • actionlint + full pre-commit: pass
  • just check: pass

Unblocks #824 (MIME defaults) and #825 (game-devices-udev checksum), plus the stalled Renovate queue.

Summary by CodeRabbit

  • Bug Fixes

    • Prevented merge queue builds from attempting image promotion, publishing, manifest creation, or digest uploads when required artifacts are unavailable.
  • Documentation

    • Added guidance for correctly gating merge queue workflow steps and tracing artifact availability across build lanes.

@castrojo
castrojo requested review from a team and repires as code owners July 19, 2026 20:49
@dosubot dosubot Bot added area/ci labels Jul 19, 2026
@castrojo
castrojo enabled auto-merge July 19, 2026 20:50
@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@castrojo, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 51 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c7f832ee-36fd-423a-8ad3-01b207c99517

📥 Commits

Reviewing files that changed from the base of the PR and between 8c4a4a8 and 9d592bd.

📒 Files selected for processing (2)
  • .github/workflows/build.yml
  • docs/skills/ci-tooling.md
📝 Walkthrough

Walkthrough

The build workflow now skips image promotion, pushing, digest handling, and manifest creation for merge_group events. CI tooling documentation describes merge queue builds as build-only and requires matching guards for artifact-consuming or publishing steps.

Changes

Merge queue gating

Layer / File(s) Summary
Build-only merge queue lane
.github/workflows/build.yml, docs/skills/ci-tooling.md
Workflow publishing and digest steps exclude pull_request and merge_group events; documentation records the related artifact and publishing guard rule.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested labels: kind/automation, kind/documentation, size:XS

Suggested reviewers: rep​ires, kikaraage

Poem

I’m a rabbit guarding the queue,
No publish steps sneak through.
Builds hop, artifacts stay sound,
Merge lanes leave no scraps around.
Thump-thump—green checks bloom!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description explains the fix, but it does not follow the template: it lacks the required 'What does this change?' and 'Why?'/Closes # sections. Add the required template sections with a one-sentence change summary, a 'Closes #NNN' rationale, and the checklist items from the repository template.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise, specific, and matches the main CI change to make the merge queue lane build-only.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/ci/merge-group-build-only

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

common#660 skipped the image export and CVE scan for merge_group, but the
promote/push/digest/manifest steps still ran on != 'pull_request' (which
includes merge_group). The promote step read the never-exported
/tmp/scan-image.tar and failed, ejecting every merge queue entry since
2026-07-06 (PRs 802, 815, 817, 824, 825 all hit it).

Exclude merge_group from every push-lane step so the queue lane only
verifies the combined commit builds. Registry pushes, digests, manifests,
and signing remain exclusive to the push/dispatch lanes.

Assisted-by: Claude Fable 5 via GitHub Copilot
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@castrojo
castrojo force-pushed the fix/ci/merge-group-build-only branch from 8c4a4a8 to 9d592bd Compare July 19, 2026 20:58
@castrojo
castrojo merged commit a8cb0a1 into main Jul 19, 2026
@castrojo
castrojo deleted the fix/ci/merge-group-build-only branch July 19, 2026 20:58
@castrojo castrojo added 4-review A pull request is awaiting review. and removed kind/bug labels Jul 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4-review A pull request is awaiting review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant