Integrity: Continuous Integration

What’s It All About?

I’m a big fan of Continuous Integration when writing software. However I’ve always found myself disappointed by the CI solutions that are floating around, namely Cruisecontrolrb. Managing the processes can become a nightmare once you have a few projects running under it. At work I was recently tasked with revamping our on-again/off-again cruisecontrol setup and I thought to myself “there has got to be something better.” It turns out there is, it’s called Integrity. Here’s why I love this little piece of software.

  • works fine with github repos, public and private
  • emails me reliably so I don’t have to check a web ui to know what’s up
  • automatically works with the Post-Receive hooks github offers, including branch support
  • excellent test coverage, it’s was at 100% last time I hacked on it
  • works off an sqlite3 database
  • keeps history of test runs
  • written in datamapper and Sinatra
  • they’ve got lighthouse setup (here)

Random Tidbits

The README on the integrity site is a great start, but here’s a few extra things that we’re using that you might be interested in.

###Process Management

We’re just running bin/integrity like the README says under GNU Screen. It hasn’t crashed and doesn’t seem to be leaking.

###Private Repo Access

We’re using keychain and github deploy keys to access our source code from crons and the ci process.

###The Github Hooks are AWESOME

A lot of the time a simple CI setup will just ‘svn up’ or ‘git pull’ and run the latest version that it pulls down. The github hooks actually send SHA1 hashes for each commit that a person makes. If one of your co-workers bundles half a dozen commits and he broke the build in the middle, you’ll be able to identify which commit caused the problem instead of reviewing each commit and possibly running them all yourself. It’s this easy:

  • Click Edit on your github project (example)
  • Enter your Post-Receive url (example)

Can It Get Any Better?

I’d really like to see some async build process for Integrity, or perhaps some devver integration. It’s a pretty solid product and it keeps improving.