Mergify and Tide

Hi gang,

We started a transition from Tide to Mergify to handle our automatic merging needs across the organization. The intent was to give us a lighter-weight merging solution better integrated with the normal GitHub workflow. At this point, all of our smaller repos have moved to Mergify, leaving istio/istio and istio/proxy as the two main Tide-based repo.

Turns out that we can convince Tide to work in pretty much the same way as Mergify, using the GitHub UI for CR approvals, using CODEOWNERS instead of OWNERS to control access, etc. Tide is built to work well with Prow, which we use for build automation. And Tide is relatively easy for us to extend for our use, whereas Mergify is a service we don’t control.’

Given the integration benefits between Tide and Prow, I want to evaluate whether we can move everything back to Tide and abandon Mergify.

We’re going to try this updated Tide configuration on the istio.io repo. If that works out, then we’ll rip through all the repos and replace Mergify with Tide.

One area that will need some attention is likely to be the automatic cherry-pick feature we’ve all gotten used to with Mergify. This will likely need some work in Tide to support before Tide can be a complete replacement for Mergify.

Please let me know if you have any concerns.

2 Likes

Would the cherrypicker external plugin be suitable for Istio’s use cases? https://github.com/kubernetes/test-infra/tree/master/prow/external-plugins/cherrypicker#cherrypicker

It’s darn close, but that plugin is dependent on the chatbot. We’d like something that is based on labels. Right now, we have the action/merge-to-master, action/merge-to-release-1.2, etc. labels. You apply these to a PR and you magically get a PR for the cherry pick.

From the description of the plugin, it appears better than Mergify in that it creates its own forks. Also, mergify cherry picks throw the CLA bot for a loop. If this plugin runs as part of prow, then it’ll have the right credentials to keep the CLA bot happy.

So I think we want to start with the cherry pick plugin and extend it so support being controls via labels instead of the chatbot. Then we’ll have an even better solution than with Mergify.