1. Aug 10th, 2011

    Travis CI

    José Valim:

    Travis is like Github for CIs. So easy to setup that everyone does it.

    It’s the new awesomesauce.

    If you need continuous integration for your open source projects than Travis CI is a no brainer. It’s free. It works. It’s trivial to setup. If you don’t know you need CI for your open source project … that’s topic for another post.

    It’s “an open-source, distributed build system for the Ruby community”, but if you’re willing to violate these ToS, you can also use it on Node.js projects. See this little hack.

    You might have to fiddle with the .travis.yml file, but setting up a build matrix in a text file is orders of magnitude easier than using a Web UI.

    Need to test on both Ruby 1.8.7 and Ruby 1.9.2? Run the test suite under both Rails 2 and Rails 3 setups? Test against MongoDB, MySQL, Postgres and Redis? Done, done and done.

    The build configuration is checked into source control, that means, anyone can improve it. Right now I can’t get the Vanity tests to pass on 1.8.7 against MySQL, but maybe you can take a look and help?

    And — this is my favorite part about Travis CI — anytime you branch or fork a project, you get a new build. Just like that. (If you’re forking, you’ll need to add your fork to Travis, but that’s only a click away)

    That means you can work on patches in your own branch and run them through the entire build matrix. Just like that.

    When it’s time to contribute your patches to the master branch, you know they won’t break the build. And if there’s need to change the build, you can merge these changes too.

    If you’re managing an open source project, you ought to be looking at Travis CI.

    I hope soon enough we’ll be able to use it for our internal build system. Until then, my open source projects are in good hands.

    1. Aug 10th, 2011

      Josh Kalderimis

      Thank you for such an excellent write up of Travis!

      It’s fantastic to know that everyone loves Travis as much as we love working on it :)

      And of course, if anyone has any suggestions or ideas where we can improve Travis, please feel free to pop into #travis on freenode to discuss them, or add an issue to our GitHub issues tracker and we can look into it.

      Thanks,

      Josh and the Travis team.

      p.s. Sven Fuchs and I will be presenting at MadisonRuby about Travis, so come along and learn a little bit more on what is under the hood.

    2. Aug 10th, 2011

      Michael Klishin

      Assaf,

      By the way, support for other languages/technologies is coming. We will start with Erlang, Java and Clojure but since we have Node 0.4.8 and NPM 1.0.12 (or so) provisioned in our VMs where builds are ran, it won’t be a big deal to support Node.

      We hope to finish and test support for Erlang & JVM languages in the next month.

      And for the list of what is provided in the travis environment, see our Chef cookbooks.

    3. Aug 10th, 2011

      Assaf

      @Michael, I’m already building a Node.js project with Travis CI. Not sure if much needs to be done other than documenting the .travis.yml settings. If you need help, let me know.

      @Josh, thanks for making it happen.

    4. Aug 10th, 2011

      Michael Klishin

      @Assaf,

      One of the features we want to support for other languages (when possible) is testing against multiple runtimes (like multiple Rubies we do today). Not sure how useful it is for Node today but it obviously will be useful at some point because Node will introduce backwards incompatible changes (or maybe there will be alternative Node implementations on other JS VMs, who knows).

      I am guessing for now we can just document Node support better and make it “official” by replacing “for the Ruby community” with “for the open source community” ;)

    5. Aug 10th, 2011

      Assaf

      @michael, supporting multiple versions of Node would be great. It’s not as critical as having RVM, but Node is moving fast and you always want to be testing on two minor releases (right now 4.x stable and 5.x unstable).

      Have a look at nave, I think this one is better for Travis.

    6. Aug 10th, 2011

      Michael Klishin

      @assaf, great, I wasn’t aware of nave. Will check it out. We just ran a successful Clojure build on travis-ci.org without waiting for language-specific builders using your techniques ;)

    Your comment, here ⇓