What is Homu?

Homu is a gatekeeper for your commits.

Unlike several other continuous integration services, Homu tests a pull request just before merging it, not after the fact. It is analogous to a pre-commit hook. In this way, Homu keeps the master branch always "green", which means that you will never break master, effectively eliminating the needs of the build badges. (Although you may still want to have one, because they are pretty!)

Also, it works on top of GitHub and Travis, so you don't need to set up another CI tool.

How does it work?

After reviewing it, you leave an "approval" comment in a pull request. Homu detects this, and starts testing using Travis.

If the test passes, Homu merges the pull request into the master branch and proceeds to the next one. Note that Homu can only test one pull request at a time, because recycling the outdated test results can lead to false positives (which will break master).

If the test fails, Homu reports the failure in a comment. You can utilize a queue page to get an overview of the pull requests.

Also note that you should not push to master directly, as it negates the benefits of using Homu.


You should mention @homu in a comment.



Is Homu open sourced?

There is a stand-alone version of Homu, which is open sourced. The Rust project and the Servo project are currently using this as a part of their test infrastructures. You can download it at https://github.com/barosl/homu

How is it structured?

Stand-alone Homu is written in Python, and uses the github3.py library.

Homu.io (this site) is written in Rust, and uses PostgreSQL as a storage. It internally communicates with the stand-alone version.

Where did the idea of the commit gatekeeper come from?

This was originally an idea from one of the previous colleagues of Graydon Hoare. Graydon, who is also known as the creator of the Rust language, implemented this idea against GitHub and named it bors. bors had been primarily used by the Rust project, and also by Basho (the creator of Riak). Early this year, bors was rewritten from scratch to overcome the issues that had been revealed with the growing of the Rust project, mostly performance problems, resulting Homu.