Travis and Python

Today I took my name back and got Armstrong tests running on Travis CI.
Travis CI is the distributed, community run continuous integration server
that the Ruby community has put together. It lets you do all manner of fun
things, like testing in dozens of different Ruby version configurations.

You’re probably wondering what Armstrong is doing there with all of this
talk of Ruby. No, I didn’t rewrite Armstrong in Rails last night. No, I
didn’t convert all of our fabfiles over to Rakefiles either. Instead, I
subverted it from within.

Travis CI uses a .travis.yml file for all of its configuration. There are
two key fields that it gives you that let you do fun things with it:
before_scripts and scripts.

before_scripts runs before anything starts. It’s like setup in the xUnit
world, but for your whole environment. Each of the Armstrong components ships
a requirements/dev.txt file, so I tell Travis to do a pip install -r of
that during setup. That’s right, Travis CI has pip installed!

Next, I’ve set the script to use our test runner, fab test and we’re set.
I had to add a few environment variables to turn off our coverage
reports—they don’t provide much value when there’s no one there to view
them—and we don’t need to do a re-install like we do on a local environment.

There’s work happening to bring native Python support. Native support means
being able to test against multiple versions and such. Be sure to check out
the #travis channel on Freenode if you’re interested in helping out.