igorjs/Merge Queue (FIFO + Fastlane)
A merge queue for GitHub Pull Requests implementing FIFO ordering with automatic re-testing, hot‑fix fastlane, stale branch updating, optional queue tracking via a dashboard issue, and optional sync to a GitHub Project (v2). Designed to work on free tier accounts and private repositories without requiring any paid GitHub features. This action serialises PR merges, ensures each change is tested on top of the current base branch and prevents bad commits from drifting into your protected branch. It can also surface the queue in a project board or dashboard issue for your team.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Stale
- License
- None
Inputs
| name | description | required | default |
|---|---|---|---|
| token | GitHub token used for API calls. Defaults to the GITHUB_TOKEN provided by the runner. You can provide a fine‑grained PAT when syncing to a project owned by an organisation that your workflow token cannot access. | no | — |
| base_branch | The protected branch that PRs merge into (e.g. master or main). This action will stage merges on top of this branch and merge tested PRs back into this branch. | no | master |
| queue_branch | The branch used to stage normal queue merges. It will be force updated each run and optionally deleted at the end. | no | merge-queue/staging |
| fastlane_branch | The branch used to stage fastlane (hotfix) merges. It will be force updated each run and optionally deleted at the end. | no | merge-queue/fastlane |
| state_branch | Branch where the action persists its internal state, including the FIFO queue file. This branch will be created automatically if it does not exist. | no | merge-queue/state |
| queue_file | Path to the queue file (JSON) within the state branch. The file stores an object of the form `{ "version": 1, "queue": [PR numbers] }`. | no | .github/merge-queue-queue.json |
| status_context | Name of the commit status created on each PR head. Add this context to your branch protection settings. | no | merge-queue |
| mode | Operation mode: either `shadow` or `live`. In `shadow` mode the action stages changes and reports status but never merges PRs. In `live` mode the action merges successfully tested PRs. | no | shadow |
| fastlane_matchers | Comma separated list of case‑insensitive regular expressions used to detect hotfix or critical PRs by branch name or title. When a PR matches any pattern it bypasses the FIFO queue and is processed immediately (fastlane). Patterns must be valid JavaScript RegExp without surrounding slashes. | no | ^(hotfix|critical|security)/,hotfix,^hotfix: |
| behind_max_commits | If a PR branch is behind the base branch by more than this many commits the action will attempt to update the branch automatically using the Update Branch API. Set to 0 to disable auto updating. PRs from forks with edits disabled cannot be auto updated. | no | 100 |
| merge_method | Merge method used when merging the PR back into the base branch. Use `merge` for a merge commit (ensuring the merged tree exactly matches the staged test) or `squash` to squash commits if your repository enforces a linear history. | no | merge |
| clean_queue | Whether to delete the queue/fastlane branch after each run. Set to `false` if you wish to keep the branches for audit purposes. | no | true |
| enable_queue_tracking | When `true`, the action renders the current queue as a markdown table in the job summary and upserts a dashboard issue. Requires `issues: write` permission. | no | true |
| dashboard_title | Title used for the dashboard issue. If an open issue with this title exists it will be updated; otherwise a new issue is created. | no | Merge Queue Dashboard |
| dashboard_label | Optional existing label to attach to the dashboard issue. The label must exist in the repository; if it doesn’t the issue will be created without labels. | no | merge-queue-dashboard |
| dashboard_pin | Whether to pin the dashboard issue when created or updated. Requires `issues: write` permission. | no | true |
| dashboard_scan_open_issues | Maximum number of open issues to scan when locating an existing dashboard issue. Increase if your repository has many open issues. | no | 100 |
Outputs
no outputs