Skip to content

Merge Queue

Batched merge queue with error recovery, rollback support, and configurable feedback rules.

Overview

The merge queue manages PR merges in an ordered, batched fashion:

mermaid
graph LR
    PR[Pull Request] -->|Admit| Q[Queue]
    Q -->|Wait for Checks| R[Ready]
    R -->|Merge| M[Merged]
    M -->|Failed?| RB[Rollback]
    RB -->|Revert PR| PR

Queue Configuration

Per-repo settings:

bash
curl -X POST https://gitwire.yourdomain.com/api/phase2/queue/owner/repo/config \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "merge_method": "squash",
    "delete_branch": true,
    "required_checks": ["ci/test", "ci/lint"],
    "max_queue_depth": 20,
    "check_timeout_mins": 60,
    "rollback_enabled": true,
    "base_branch": "main"
  }'

Queue Entry Lifecycle

StatusMeaning
pendingWaiting in queue
readyAll checks passed, awaiting merge
mergedSuccessfully merged
blockedChecks failed, needs attention

Feedback Rules

Configure notifications for merge events:

bash
# Create a feedback rule
curl -X POST https://gitwire.yourdomain.com/api/phase2/feedback \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "merge-notification",
    "event_type": "merge_success",
    "post_pr_comment": true,
    "include_log_link": true
  }'

Error Recovery

When a merge fails, GitWire can:

  1. Automatically retry with configurable backoff
  2. Create a rollback event
  3. Open a revert PR if rollback_enabled is true

Telemetry

EndpointDescription
GET /api/phase2/telemetry/summaryQueue health summary
GET /api/phase2/telemetry/eventsRecent pipeline events
GET /api/phase2/telemetry/throughputMerge throughput metrics
GET /api/phase2/telemetry/ci-healthCI health across repos

Rollback Events

When a merge causes issues, rollback events track:

  • Original merge commit
  • Revert commit
  • Revert PR number
  • Trigger reason
  • Status: pendingcompleted

API Endpoints (14 total)

MethodPathDescription
GET/api/phase2/queueList all queue entries
GET/api/phase2/queue/:owner/:repoQueue for a repo
POST/api/phase2/queue/:owner/:repo/configSet queue config
POST/api/phase2/queue/:owner/:repo/:pr/admitAdmit a PR to queue
POST/api/phase2/queue/:owner/:repo/:pr/removeRemove from queue
GET/api/phase2/feedbackList feedback rules
POST/api/phase2/feedbackCreate feedback rule
PUT/api/phase2/feedback/:idUpdate rule
DELETE/api/phase2/feedback/:idDelete rule
GET/api/phase2/telemetry/summaryTelemetry summary
GET/api/phase2/telemetry/eventsPipeline events
GET/api/phase2/telemetry/throughputThroughput metrics
GET/api/phase2/telemetry/ci-healthCI health stats
GET/api/phase2/rollbacksRollback history

In This Section

Released under the MIT License.