Hello everyone,
Some of you may have already seen this, but I’ve started to rewrite the PR processor into a Github application. An example probably says a lot more than a bunch of text:
Currently only Redmine issue checks are implemented, but the reporting is much better. Rather than comments inside the main thread, it now uses the Checks tab to report on issues. It’s live on foreman, smart-proxy, foreman-installer, foreman-selinux and foreman-packaging now to evaluate how it performs.
When it all works well, I’m going to enable it on all theforeman repositories and allow the bot to run on any organization so it can be used on Katello as well. This is trivial from the Github side, but I need to implement limits. If desired, we can probably also make it work for Pulp and their (branded) Redmine instance. Once that’s done, I’m going to drop the comments from the classical bot.
Future work
We’ve had a discussion about improving PR merge velocity and various items from that thread can be implemented.
I’d like to remove code owners and replace it by intelligent bot checks that request the packaging team to review it. Ideally we’d kick off a packaging scratch build and do a repoclosure check but that’s more long term.
Technical details
The current PR processor is a Sinatra application that runs as a regular user using webhooks. The benefits of an are are access to the checks API and removing the need for a separate account. It also means we can simply enable it on all repositories without manual configuration everywhere.
For the next generation I chose Python as a basis. This is mostly because I was talking to an Ansible developer and he maintains octomachinery which makes writing a GH app easy. It’s also because I’m selfish and writing Python is much easier for me. The sources are in the app branch of the PR processor git repository.