Some CI Environment Updates

Michael Klishin,

Open source projects move fast and so does Travis CI environment. Most of the changes make open source projects and Travis CI environment better but some break backwards compatibility and may cause CI builds to fail.

Today we want to give you a heads-up on several recent (or upcoming) CI environment changes that are not backwards compatible. They are: moving to Leiningen 2.0 Preview 7, Node.js 0.8, switching to CRuby 1.9.3 as the new default Ruby version.

Leiningen 2.0 Preview 7

Travis CI provides Leiningen 1.7 and a recent Leiningen 2.0 Preview versions side by side for projects to use. This gives projects that use Leiningen (primarily in the Clojure community) time to migrate to Leiningen 2.0 and not lose the ability to use Travis for CI.

The most recent Leinigen 2.0 preview release introduces a breaking change that may affect a sizeable portion of projects on Travis CI: task chaining now requires using the new do task.

For example, lein clean, test, deploy with Lein 2.0 Preview 6 becomes lein do clean, test, deploy in Lein 2.0 Preview 7. Use of the old style will emit a warning explaining the change.

We will deploy Preview 7 on the 1st of July, 2012.

For more information about this change, please see preview 7 release announcement. The list of changes available on Github.

Ruby 1.9.3 as the new default.

When Travis CI was started in early 2011, using Ruby 1.8.7 as the default Ruby was a conservative but reasonable choice. Today, over one year later, almost all maintained projects that can run on Ruby 1.9 are compatible with 1.9. In addition, there are projects that rely heavily on Ruby 1.9-specific features and PaaS providers where Ruby 1.9 is the only choice.

So, on July 9th, 2012, we will make Ruby 1.9.3 the new default Ruby version. Please note that it does not mean that 1.8.7 won’t be available, only that if you don’t specify the list of Rubies to test against, Travis CI will use 1.9.3 starting July 9th.

Node.js 0.8

Recently released Node.js 0.8 is now available on Node.js workers. This release has multiple public API changes that are not backwards compatible. One such change that will affect CI experience for projects that test against multiple Node.js version is the migration from Waf to Gyp for the build system.

Projects that have native parts are “recommended to migrate to node-gyp ASAP” (quoting Node.js wiki).

More information can be found in the README of node-gyp

Getting Help

If you have questions, please ask them on our mailing list or in #travis on chat.freenode.net.

Happy testing!

The Travis CI Team


Support for multiple JDKs

Michael Klishin,

Every new feature starts with a developer wanting to scratch an itch.

When Travis CI started in early 2011, one of the goals behind it was to make CI for everyone, including ourselves. Back then the Ruby community was in full swing moving to Ruby 1.9, and most popular projects supported 1.9 unknowingly, but it was common to run into issues with projects that either did not test against 1.9, or tested against 1.9 but not 1.8. So one of the features that was added very early on was the ability to easily test against multiple versions and implementations of Ruby in the simplest way possible.

Fast forward to around August 2011. We were working on Erlang support, the first additional language to be added to Travis, and had a question to face: should multi-runtime support be a Ruby-specific feature or should we try to do the same for more languages if we can? It was a no brainer: easy CI against multiple runtimes is too awesome a feature to pass by. So we launched Erlang support with multiple Erlang/OTP versions from the start.

Today you can test your projects in several languages against multiple releases or implementations. Sometimes we did not have to do any work to make this happen: Clojure and Scala build tools, (Leiningen and SBT, respectively), for example, let you test against multiple versions without having to install several versions of Clojure or Scala.

However, up until now, we only provided a single JDK version: OpenJDK 6. Out of eleven languages with first class support on Travis CI, five run on the JVM: Clojure, Groovy, Java, Ruby, and Scala. But some of the projects already target JDK 7-specific features, for example, the Fork/Join framework.

So without a further ado…

Today we are happy to announce support for multiple JDKs!!!

This will work for Clojure, Groovy, Java, Ruby and Scala. We hope this feature will make OpenJDK 7 migration even smoother and will make the lives of many developer communities a little bit more enjoyable. This includes the Travis CI core team, since a large chunk of Travis CI itself runs on the JVM :)

How do I turn it on already?

To test against multiple JDKs, list them using the :jdk key in your .travis.yml:

jdk:
  - openjdk7
  - openjdk6
  - oraclejdk7

It is that simple and that easy!

You can specify one, two or all JDK keys, and it works the same way for Java, Clojure and so on.

Here are some real examples:

Just in case, our documentation guides are updated to mention this feature.

The Road to OpenJDK 7

But there is more. Today, if you don’t specify what JDK version Travis CI should use you get OpenJDK 6. JDK 6 was released in 2006 and reaches end-of-life in November 2012.

OpenJDK 7 has been around for almost one year and ships with many long awaited features, including the crown jewel invokedynamic, a new JVM instruction that makes it possible for language implementers to take advantage of JVM optimizations that were previously (virtually) inaccessible to them. This feature is not just for dynamic languages like JRuby, Clojure and Groovy: there are projects that make use of invokedynamic for Scala, for example. Upcoming versions of Ubuntu and Fedora will use OpenJDK 7 by default as well.

Take a look at what JRuby developers have in mind for JDK 7 users.

So, on June 18th, 2012, OpenJDK 7 will be the default JDK on Travis CI. We think it’s about time, but don’t worry, OpenJDK 6 will still be around for those who need it.

To get OpenJDK 7 on Linux, use your package manager, it should be available in all recent releases. For Windows, use Oracle’s JDK 7 distribution. For Mac OS X, you can either use Oracle JDK 7 for OS X or one of the OpenJDK 7 for OS X packages by Henri Gomez.

To learn more about JDK 6 and JDK 7 differences, see

Thank you, contributors

This feature was designed and implemented by Loïc Frering and Michael Klishin.

We would like to thank Henri Gomez for his work on packaging OpenJDK 7 and OpenJDK 8 for OS X. Getting a recent OpenJDK 7 build on OS X cannot possibly be easier than that.

Discuss

Feel free to upvote and discuss this feature on Hacker News.

Happy testing!

The Travis CI Team


Thank you for the AWESOME support

Josh Kalderimis,

plus a little treat for you :)

[ !["Received @travisci stickers today :)" - Marek Nowak](https://distilleryimage1.s3.amazonaws.com/b4a425189f6911e1a8761231381b4856_7.jpg) ](https://twitter.com/#!/yundt87/status/202781296223715328)
"Received @travisci stickers today :)" - [*Marek Nowak*](https://twitter.com/#!/yundt87)

When the ‘Love Campaign’ was launched back in February we didn’t have a goal in mind with how much we wanted, or needed, to raise. The general idea was simple: the more we raised the more we could work without having to worry about where rent money came from.

The first couple of days of donations were insane, with the majority of all the money raised coming within the first 24 hours of us opening the door. It was amazing and very humbling to know that the community was behind Travis and also behind us.

Well, three months and ten days later we are ecstatic to announce that we have raised $100,000 !!!

The one thing we did not anticipate or plan for was the time needed to ship all the swag and personal notes to all the donators. In fact, to say we were running behind was an understatement. Even the personal notes took longer than we expected due to the love we put into it. For example, for all donators of $35 or more we needed to sort out the following:

[ !["Here are the @travisci love stickers! Thank you guys!" - Jaime Gil de Sagredo](https://yfrog.com/oc36jiodj:iphone) ](https://twitter.com/#!/jaimegil/status/202841263471476736)
"Here are the @travisci love stickers! Thank you guys!" - [*Jaime Gil de Sagredo*](https://twitter.com/#!/jaimegil)
  • A wax seal of the Travis T (we even included some special words surrounding the T)
  • Lots and lots of wax, including a special wax gun! (we did not even know they made them)
  • A specially designed Love Certificate, and lots of them
  • Lots of big envelopes so the certificates and swag didn’t get damaged
  • Several days of wax sealing, packing, and addressing 400+ envelopes
  • And personally handwriting the donor’s name along with a one-of-a-kind note onto the certificate. (Which also meant that we could not simply prepare a huge stack of certificates, we needed to add them to the right envelope for the right donation package, addressed to the right person.)
[ ![Travis Logistics](http://distilleryimage3.s3.amazonaws.com/be00d70c9b5c11e18bb812313804a181_7.jpg) ](http://distilleryimage3.s3.amazonaws.com/be00d70c9b5c11e18bb812313804a181_7.jpg)
Travis Logistics

It was all worth it though, it even made us think about starting ‘Travis Logistics’.

All this swag is in the mail right now, and for lots of Europe and America it should be arriving at your door, ready to be attached to your laptop or for your kids to play with!

In fact, if you want some swag or your own Love Certificate it isn’t too late to donate! ;)

What we have delivered so far

[ !["Dear @kanbanery @wooga. These two thank you for the @travisci support." - John E. Vincent](https://twitpic.com/show/large/9mjmhh) ](https://twitter.com/#!/lusis/status/203624917055455235)
"Dear @kanbanery @wooga. These two thank you for the @travisci support." - [*John E. Vincent*](https://twitter.com/#!/lusis)

Apart from sending out swag we also promised to add some awesome new features to Travis. These included:

  • Support for more languages
  • Pre-tested pull requests
  • Private build support
  • Build artifacts

So far we have delivered the first two of these. With the help of the community and Michael Klishin we have added support for Perl, Python, Java, Clojure, Scala, and Haskell.

[ ![Loads of swag](http://distilleryimage1.s3.amazonaws.com/eef1f4869b5711e181bd12313817987b_7.jpg) ](http://distilleryimage1.s3.amazonaws.com/eef1f4869b5711e181bd12313817987b_7.jpg)
Loads of swag

Also, we have implemented support for pre-tested pull requests, which has taken the community by storm. We are currently still unlocking accounts for donors before we will finally release the feature into the wild. So, if you would like to use it for your projects please shoot us an email.

We are also in the middle of completing private build support, which will be released as a product currently codenamed “Travis Pro - Magnum”. We have had a few handpicked users running builds on a alpha-stage system for quite a while, but we still need to put more work into it before we can add more users.

Expect a blog post next week with further details on what is going on with Pro, including how you can test drive it for yourself.

But we have some special news for you….

We are very pleased to announce that we are adding some goodies to each of the plans.

Two awesome companies, RailsCasts and Pragmatic Programmer, as well as our own Mathias Meyer have jumped on board to add some love to some of the current donation plans.

RailsCasts has been very generous and offered Huge, Big and Medium donators a month of RailsCasts Pro for free.

The Pragmatic Programmers have been awesome to offer all Huge and Big donators a free ebook of their choice.

[ ![Riak Handbook](http://distilleryimage7.instagram.com/2a8180b0a40011e1b10e123138105d6b_7.jpg) ](http://distilleryimage7.instagram.com/2a8180b0a40011e1b10e123138105d6b_7.jpg)
Riak Handbook

And our own amazing Mathias has offered all Huge and Big donators a copy of the Riak Handbook!

PLUS we have decided to double the number of pair programming hours offered in the Huge plan, so now you can pair with your favorite developer for even longer!!

These new plans will take effect immediately, and over the coming weeks we will get in touch with all current donators to make sure you get the swag you deserve!

If you would like to upgrade your donation to one of the bigger plans, email contact@travis-ci.org and we can help you with it.

Last but not least

We would like to extend a massive amount of love and thanks to RailsCasts, Pragmatic Programmer, and Mathias for being so awesome and generous.

But even more important, we would like to thank every single person and company who has donated to say thanks for helping us make Travis awesome, we would not have been able to do this without the help from every single one of you!

[ !["In the mail today: Stickers from @travisci" - André Wendt](https://instagr.am/p/KhoUhnJkmW/media/?size=l) ](https://twitter.com/#!/awendt/status/201278013990641664)
"In the mail today: Stickers from @travisci" - [*André Wendt*](https://twitter.com/#!/awendt/status/201278013990641664)

If you have any questions, comments, feedback, or love you would like to share with us, do not hesitate to email or tweet us and we will reply as soon as we can.

Have a fantastic week!

The Travis Team

Some quick facts:

  • We started the campaign on 7th of Feb
  • 100k raised on the 17th of May
  • 533 donations from individuals
  • 28 company donations
  • Over 5,000 pieces of swag sent out
  • Over 1,000 EUR in postage and envelopes to send all the swag
  • And so far only one envelope has been ‘return to sender’
[ !["Ma, see what the mailman brought :)" - Dennis Reimann](https://p.twimg.com/AssRaPZCIAEAOr0.jpg:large) ](https://twitter.com/#!/dennisreimann/status/201273750849724416)
"Ma, see what the mailman brought :)" - [*Dennis Reimann*](https://twitter.com/#!/dennisreimann)