You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
.github/workflows: configure some workflows to run as part of the merge_queue
- Add merge_group for event triggering
- Add a minimal parameter to the e2e-matrix so that we run only one
set of e2e tests on merge.
- Update DEVELOPMENT.md to explain the mergue queue implementation.
Signed-off-by: Vincent Demeester <vdemeest@redhat.com>
Copy file name to clipboardExpand all lines: DEVELOPMENT.md
+54Lines changed: 54 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -291,6 +291,60 @@ as follows.
291
291
292
292
---
293
293
294
+
## Pull Request Merge Queue
295
+
296
+
This repository uses GitHub's merge queue to ensure the `main` branch remains stable and free from integration conflicts. The merge queue automatically validates that approved pull requests can be merged cleanly with the latest version of `main` before allowing them to land.
297
+
298
+
### How It Works
299
+
300
+
When your pull request is approved and all required checks pass:
301
+
302
+
1. **Add to Queue**: An approver adds your PR to the merge queue (either manually or automatically based on labels/approvals)
303
+
2. **Temporary Merge**: GitHub creates a temporary branch (`gh-readonly-queue/main/pr-{number}-{sha}`) that merges your PR with the latest `main`
304
+
3. **Validation**: Required CI checks run on this merged state to verify compatibility
305
+
4. **Automatic Merge**: If all checks pass, your PR is automatically merged to `main`
306
+
5. **Failure Handling**: If checks fail on the merged state, your PR is removed from the queue and you'll need to rebase/fix conflicts
307
+
308
+
### CI Behavior in Merge Queue
309
+
310
+
To keep the merge queue fast and efficient, the CI matrix is optimized differently for merge queue builds versus regular PR builds:
311
+
312
+
**Regular Pull Request Builds:**
313
+
- Full e2e test matrix: 18 configurations
314
+
- 2 architectures (amd64, arm64)
315
+
- 2 Kubernetes versions (1.28, 1.34)
316
+
- 3 feature flag sets (stable, beta, alpha)
317
+
- Comprehensive validation before approval
318
+
319
+
**Merge Queue Builds:**
320
+
- Minimal e2e test matrix: 1 configuration
321
+
- Single architecture: ubuntu-latest (amd64)
322
+
- Latest Kubernetes: 1.34
323
+
- Stable feature flags only
324
+
- Faster validation focused on integration conflicts
325
+
- Full matrix already validated during PR review
326
+
327
+
This optimization significantly reduces merge queue time while maintaining safety, since your PR has already passed the full 18-configuration test matrix during review.
328
+
329
+
### What You Need to Know
330
+
331
+
- **PR reviews unchanged**: Continue developing and testing PRs as usual - all checks must pass before your PR can enter the queue
332
+
- **Automatic process**: Once approved, the merge queue handles merging automatically
333
+
- **Stay up-to-date**: Keep your PR rebased on `main` to minimize queue failures
334
+
- **Queue failures**: If your PR fails in the queue, check for:
335
+
- Merge conflicts with recent changes to `main`
336
+
- Integration issues with other recently merged PRs
337
+
- Flaky tests (less common with minimal matrix)
338
+
339
+
### Benefits
340
+
341
+
- **Never break main**: Changes are only merged if they work with the latest code
342
+
- **No merge conflicts**: Incompatible changes are detected before landing
343
+
- **Reduced CI load**: Optimized test matrix for queue builds saves resources
0 commit comments