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.
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
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.
r+: Accept a pull request. Pull requests will automatically be unaccepted if the contents are changed.
r=NAME: Accept a pull request on behalf of NAME.
r-: Unacccept a pull request.
p=NUMBER: Set the priority of the pull request (defaults to 0).
retry: Signal that the pull request is not bad, and should be retried by Travis.
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
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.
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.