Testing against Rubinius on Travis CI
Tweet Follow @hazula
Background:
Fourteen (14) days ago, my Rubinius builds on Travis CI began erroring
Since, I can’t seem to find a write-up on the final state of affairs, I’ve written-up a summary of what I did, and how I got the tests reliably passing one (1) day ago.
Update 2014-02-10
The Rubinius 2.2.5 release now includes the standard library, and so, you no longer need a special :rbx group, only to specify rbx-2 in your travis.yml
Standard library gems ‘racc’, ‘minitest’, and ‘rubysl-test-unit’ are now pre-installed, in addition to json and the RubySL gems. (Brian Shirai)
The ‘rbx-2’ is to limit testing on Rubinius 2.x since there will be other versions of Rubinius > 2.x soon. This part is unrelated to loading gems.
I’ve changed Rubinius code loading to avoid Bundler stripping pre-installed gems. I’ll be making a patch to Bundler so it will specifically consider pre-installed gems but in any case, Bundler will no longer prevent eg rubysl-securerandom or whatever from being loaded. I’m writing a Migrating from MRI guide that will cover this.
The now-recommended part of .travis.yml
Original Fix:
- Update travis.yml to specify
rbx
wherever you hadrbx-whatever
- Add a special travis gemfile or modify your gemfile to have some subset of
Selected parts of my .travis.yml
Notice the cache: bundler
line?
Since there are a lot of rubysl downloads, you can get a significant speed-up by telling Travis to cache them.
Selected parts of my Gemfile.travis
For completeness, the working commands that now run on travis are
Examples of rbx-specific Gemfile entries:
-
I’m submitting a patch to Bundler after discussing with Andre that will enable Rubinius to designate rubysl as gems that are bundled with the distribution and Bundler will use that information while resolving.
This patch is a stop-gap measure and I can submit another PR to remove this once Bundler with that patch is released.
References:
- Twitter conversation about the failures
- It appears part of the issue is whether or not the gem spec PLATFORM can/should/does refer to RUBY_ENGINE
- Rubinius Post: Testing Your Project with Rubinius on Travis
- Rubinius meta-gems: rubinius.gemspec, rubinius-developer_tools, rubinius-build_tools, ruby-sl, rubysl-rake, rubysl-bundler, rubysl-rspec
Original content source: my comment on travis-ci issue
blog comments powered by Disqus