Pillow icon indicating copy to clipboard operation
Pillow copied to clipboard

Use GitHub's automerge instead of Mergify

Open hugovk opened this issue 4 months ago • 4 comments

We first set up Mergify in 2020 to automerge PRs once certain conditions were met: CI has passed, PR is approved, automerge label added: https://github.com/python-pillow/Pillow/pull/4931.

Since then, GitHub has added native automerge which is a bit nicer to use: no need to add a label, and while the CI is still running, the "Merge pull request" button becomes an "Enable auto-merge" button, which will do the merge when the CI passes.

Docs: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request

I've created a ruleset for the main branch at 🔒 https://github.com/python-pillow/Pillow/settings/rules/7135275. There are lots of settings, but I've mirrored the Mergify ones:

Require these status checks to pass:

  • Docker Test Successful
  • Lint
  • MinGW
  • Test Successful
  • Windows Test Successful
  • (Cygwin omitted as it'll be removed in https://github.com/python-pillow/Pillow/pull/9119)

Also left this enabled, because we don't want to accidentally delete main:

  • Restrict deletions Only allow users with bypass permissions to delete matching refs.

We don't need to add a label, because it's now signalled by clicking "Enable auto-merge".

And we don't require explicit approval, because that's also implicit when clicking "Enable auto-merge" (similarly, for a PR where the CI has already passed, we don't require explicit approvals).

If for some reason a status check fails but we still want to merge (maybe some dependency is temporarily failing to download because a server is down), as admins we can still click to bypass the rules and merge.

Screenshots of all the settings image image image

hugovk avatar Aug 02 '25 09:08 hugovk

If for some reason a status check fails but we still want to merge (maybe some dependency is temporarily failing to download because a server is down), as admins we can still click to bypass the rules and merge.

Updated ruleset for this:

image

hugovk avatar Aug 02 '25 09:08 hugovk

Also requires "Allow auto-merge" at https://github.com/python-pillow/Pillow/settings. I also checked "Automatically delete head branches" to keep things tidy:

image

hugovk avatar Aug 02 '25 09:08 hugovk

https://github.com/python-pillow/Pillow/pull/9097 and https://github.com/python-pillow/Pillow/pull/8926 are showing an interesting side effect of these changes in settings - when we skip workflows, because we're only building docs or only building wheels, the 'Successful' checks are now just showing as 'pending'.

It doesn't cause any problems, it makes you think something might be wrong.

radarhere avatar Aug 03 '25 01:08 radarhere

Hmm, it actually does cause a problem, because it blocks merge (although you can use admin permissions to bypass it):

image

Let's hold off on this for now, and I've disabled the ruleset ("Enforcement status: Disabled") at https://github.com/python-pillow/Pillow/settings/rules/7135275.

hugovk avatar Aug 03 '25 09:08 hugovk