Bors-NG: my first Elixir/Phoenix app

Bors is a robot that integrates with GitHub pull requests. Basically, instead of clicking the merge button, privileged users leave a comment (bors r+). It queues up the pull requests and tests them in a staging branch. If the staging branch passes, it gets pushed over the top of master.

This way, master branch always passes CI. If a pull request (or combination of mutually incompatible pull requests) breaks the build, it never gets to master. If it gets to master, it already passed the test suite.

This isn’t a replacement for CI runners like Travis CI; it’s basically a wrapper on top of it. It actually just pushes to the staging branch and waits for GitHub Status Notifications (GH status is the closest thing I know of to a universal CI protocol).

I’m already using it to develop itself. I’m in the process of moving stuff off of an older Rust-based version of the same concept (contrary to what /r/rust might want you to think, Rust is really not a good choice for non-CPU-bound web apps, and this is about as non-CPU-bound as you can get; it spends most of its time waiting for your test suite to run).

p.s. I would very much appreciate some amount of code review, since this is my first Elixir project. You might also be interested in using it…

6 Likes

Contributors are more than welcome, BTW. There’s a list of easy tasks to get started marked E-easy.

2 Likes

It looks useful, a good Elixir Github bot. :slight_smile:

Oh good grief, I knew I should’ve proofread it more. I never linked to it!

1 Like