ci: cut over workflows for main merge queue#3104
Conversation
There was a problem hiding this comment.
Code Review
This pull request updates the QA bug report template to shift focus from staging to hosted or local environments and refactors the version bump check script to improve branch resolution and allow toggling the skip mechanism. Feedback highlights an inconsistency in the issue template where staging-related dropdown options remain, and a potential bug in the version check script where a git log command is executed before the necessary remote refs are fetched, which could lead to silent failures in CI environments.
There was a problem hiding this comment.
Pull request overview
This PR updates the repository’s CI/CD configuration to fully cut over from the old staging-first promotion model to a main-only GitHub merge queue flow, including removing staging-promotion workflows and tightening merge-queue-aware CI rollups.
Changes:
- Add
merge_groupsupport and refactorRun Tests/Code Styleroll-ups to work correctly formainmerge queue. - Make CI more path/use-case aware (PR vs merge queue vs push), including adding reusable workflow calls and new risk-based gating lanes.
- Remove staging promotion workflows and related helper scripts, plus retire staging-specific Docker scheduling/tag behavior.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
scripts/check-version-bumps.sh |
Makes skip behavior controllable and normalizes base branch refs for main-queue contexts. |
.github/workflows/test.yml |
Adds merge_group trigger, expands change detection outputs, and rewires the Run Tests roll-up to be event-aware. |
.github/workflows/code_style.yml |
Adds merge_group trigger and adjusts matrices/guards to support merge queue while keeping the same required roll-up. |
.github/workflows/e2e.yml |
Converts E2E into a reusable workflow with `mode: smoke |
.github/workflows/replay-gate.yml |
Converts replay gate to workflow-call + main push cache priming so test.yml can depend on it. |
.github/workflows/docker.yml |
Removes staging scheduled builds/tagging and adds validation for manual tag overrides. |
.github/workflows/claude-review.yml |
Switches Claude review triggering from staging-promotion labeling to standard PR lifecycle events (non-fork, non-bot). |
.github/workflows/staging-ci.yml |
Removed: staging promotion bot workflow. |
.github/workflows/staging-promotion-metadata.yml |
Removed: staging promotion PR metadata refresh workflow. |
.github/workflows/release-plz-batch-summary.yml |
Removed: staging-promotion-driven release-plz batch summary workflow. |
.github/scripts/update-staging-promotion-body.sh |
Removed: staging promotion PR body updater script. |
.github/scripts/update-release-plz-body.sh |
Removed: release-plz PR body updater based on staging promotions. |
.github/ISSUE_TEMPLATE/qa-bug.yml |
Updates template language to remove staging-specific guidance. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 13 out of 13 changed files in this pull request and generated 4 comments.
Comments suppressed due to low confidence (1)
.github/workflows/claude-review.yml:31
- This workflow is triggered by
issue_comment, but the checkout step doesn’t pin to the PR’s head/merge ref. As a result, anyRead/Glob/Grepusage inside the Claude action will operate on the default branch checkout, not the PR’s contents, which can lead to incorrect reviews (the prompt explicitly instructs reading “full source files for changed code”). Consider checking out the PR merge/head ref forPR_NUMBER(or adjusting the prompt/tooling to fetch file contents viaghinstead of relying on the workspace).
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
persist-credentials: false
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 13 out of 13 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
.github/workflows/code_style.yml:224
- The roll-up job name
Code Style (fmt + clippy)is now misleading: this roll-up still requiresgateway-js-syntax,cargo-deny, andgateway-boundariesto succeed (see itsneeds:list and the results it checks). Consider either restoring a name that reflects the full set of enforced checks or adjusting the roll-up dependencies to match the name, so check/run intent stays clear (and required-check contexts don’t become confusing).
code-style:
name: Code Style (fmt + clippy)
runs-on: ubuntu-latest
if: always()
needs:
- changes
- clippy-matrix
- format
- gateway-js-syntax
- clippy
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Summary
This replaces the old staging-first merge-queue rollout with a main-only cutover now that
mainalready containsstaging.Changes in this PR:
merge_groupsupport to the required CI roll-ups for the futuremainmerge queueRun Testspath/use-case aware for PRs targetingmainrelease.ymlValidation
git diff --cached --checkGITHUB_BASE_REF=refs/heads/main ALLOW_SKIP_VERSION_CHECK=false bash scripts/check-version-bumps.sh.github,CLAUDE.md,src/setup/README.md, andFEATURE_PARITY.mdfor remaining staging-promotion/staging-branch control-flow referencesFollow-up after merge
After this lands on
main:mainrequires the actual emittedRun Testsand code-style roll-up contextsmainstagingtomainstagingtomainstagingstagingbranch once no ruleset/default-branch/PR references depend on itSupersedes #2877, #2779, and #2783 for #2719.