View as Markdown

Migrate from Bulldozer to Mergify

Move from Bulldozer automerge to Mergify's Merge Queue for safer, faster merges.


Bulldozer focuses on automerging pull requests based on labels, reviews, and status checks. Mergify’s Merge Queue covers that and more, with automatic PR updates, prioritization, batching, and parallel checks.

This page shows a practical path to move from Bulldozer to Mergify’s Merge Queue.

  1. Keep your labels and branch protections as-is
  2. Set up a Mergify merge queue with conditions matching your Bulldozer config
  3. Start with a low-impact setup and expand gradually

Common Bulldozer config → Mergify Merge Queue

Section titled Common Bulldozer config → Mergify Merge Queue

Example Bulldozer snippet:

merge:
trigger:
label: ["merge when ready"]
branch_patterns: ["feature/.*"]
method: squash
required_statuses:
- "ci/circleci: ete-tests"

Equivalent Mergify configuration:

.mergify.yml
merge_protections_settings:
auto_merge: true
merge_protections:
- name: bulldozer-equivalent
if:
- base = main
- head ~= ^feature/
success_conditions:
- label = merge when ready
- "check-success = ci/circleci: ete-tests"
queue_rules:
- name: default
merge_method: squash

Notes:

  • auto_merge automatically queues PRs when all merge protection success_conditions pass

  • Checks map to check-success = <name> (or check-skipped, check-neutral)

  • Required labels map to label = <name> conditions

  • Approvals map to review count or specific reviewers

  • The merge queue keeps PRs updated automatically — no manual rebases needed

Going Further with Merge Queue

Section titled Going Further with Merge Queue

Once you have basic automerge working, you can take advantage of features Bulldozer doesn’t offer:

  • Priorities — urgent PRs jump ahead in the queue

  • Batches — merge multiple PRs at once to reduce CI load

  • Parallel checks — test multiple queue entries simultaneously

  • Merge methods: squash/merge/rebase → supported via merge_method

  • Delete branch after merge → use GitHub’s “Automatically delete head branches” repository setting

  • Rebase/update before merge → automatic in merge queue

  • Require labels → label = in success_conditions

  • Restrict by authors/paths → author =, files ~=, etc. in success_conditions or if

Was this page helpful?