2014-04-07 00:00:00 +0100 by Alex R. Young

I haven't had good experiences with continuous integration systems. They seem to work fine for a few months until they go senile and I have to nuke and reinstall them. Kent Safranski sent in Avow-CI (GitHub: Fluidbyte / avow-ci, License: MIT), an open source CI server that's built on Node and MongoDB -- hopefully this one will be different!

Avow supports Git web hooks, so you can automatically run tests when commits are pushed. It can also be configured to build a specific branch, and allows manual builds to be run.

To add a project to Avow you'll need to add an avow.json file to the project's root directory. This describes the build process as an array of tasks. Tasks are run with require('child_process').spawn, so you could technically trigger anything -- I'd like to try it with xcodebuild if I have time.

Sometimes I wish CI servers were just cron jobs that check for a non-zero exit code, but I might be able to learn to like a simple RESTful web application if it can run for a few months without exploding. The fact Avow accepts an array of commands to run is nicely simple and flexible, but I'm not sure I like the idea of having to add an avow.json file to my projects.

One thing I like about Avow is the structure of the code: the "models" are just properties on module.exports, and the HTTP routing layer is also super simple. You should take a look if you make Node web applications.