Travis CI is a distributed build system for the open source community.
You can see Travis CI in action at travis-ci.org. At about 1 year in operation, we have some prominent open source projects trusting travis-ci.org to run their continuous integration:
- Ruby projects: Ruby on Rails, Bundler, Sinatra, Rack, RSpec, Cucumber, HAML and SASS, RubyGems, rubygems.org, Mongoid, Rubinius, Factory Girl, Spree, Devise, amqp gem and even the GitHub mirror of CRuby (MRI) itself.
- JavaScript projects: Node.js, npm, Express, Vows, Mocha, Ember.js, Batman.js and numerous flatiron subprojects.
- PHP projects: Symfony 2, Doctrine 2, Zend Framework 2, Composer, Behat as well as numerous Symfony 2 bundles and Zend Framework 2 modules.
- Clojure projects: Leiningen, Midje, clj-time, Lamina, Knockbox, Langohr, Monger, CongoMongo, Neocons, Sumo.
- Erlang projects: Cowboy and Elixir.
- Java projects: Riak Java client, Cucumber JVM, Symfony 2 Eclipse Plugin.
- Scala projects: Scalding and Scalatra.
- Python projects: Tornado, simplejson, Fabric, Requests, Kombu.
- .NET/Mono community: Nancy.
Travis is an attempt to create an open source, distributed build system for the OSS community that:
- Allows open source projects to effortlessly register their GitHub repository and have their test suites run after pushes
- Allows users to contribute build capacity by connecting a machine that runs Travis workers and the virtual machines they use on their underused servers.
With Travis CI our vision is to become for builds (i.e. tests, for starters) what services like rubygems.org or Maven Central are for distribution of libraries.
We strive to build a rock-solid, but dead easy to use, open source continuous integration service for the open source community.
Please note that this is a work in progress. We have only reached our #1 goal so far. We try to follow the 80/20 rule for requirements, i.e., we focus on the most common use cases.
Travis CI is not currently a good fit for closed in-house installations. It's made up of multiple applications which evolve rapidly. We are working on providing a way to install a closed in-house installation, but we have no ETA for this at the moment. Please get in touch at support@travis-ci.com for more information.
We care about our documentation and make sure our [documentation guides] (http://about.travis-ci.org/docs/) are clearly written and up to date. Please make sure you read them. Two key guides are:
and we also have technology-specific guides:
Travis consists of several parts:
- An Ember.js-based single-page application that runs client side.
- A Rails 3 application that serves to the in-browser application and takes pings from Github.
- A JRuby and AMQP powered worker for running a project's test suite in snapshotted virtual machines.
- A websocket server (we use Pusher) for tailing build results to the browser.
- A JRuby-based AMQP daemon that collects build reports, workers state, propagates them to Pusher, delivers notifications and so on.
- Chef cookbooks that are used to provision the [Travis CI environment] (http://about.travis-ci.org/docs/user/ci-environment/) (to provide databases, RabbitMQ, Rubies/JDK/Node.js versions and so on) and tools that build VM images.
All these applications, tools and libraries are hosted under the Travis CI organization on GitHub.
A more detailed overview is available in our [Technical Overview guide] (http://bit.ly/travisci-technical-overview) aimed at developers.
Please keep in mind that Travis CI evolves rapidly and developer documentation may be outdated. (Pull requests are welcome.) Development, [travis-ci.org] (https://travis-ci.org) maintenance, and user documentation take priority.
This repository contains the old Rails app that used to serve [travis-ci.org] travis-ci. Everything has now been extracted to different repositories, and this repository is only being used as a global issue tracker and to run migrations against the database.
Want to contribute to Travis CI? Great! We realise that the documentation for
contributors isn't the best at the time, but feel free to ask us questions on
the mailing list or in IRC. A good place to start would
be the technical overview and then feading the CONTRIBUTING
file for the
repository you're contributing to.
- Second design Feb 2010
- First design Jan 2010
- Initial mockups of index and details
- Travis CI - Video: Presentation at Boston.rb (Jeremy Weisskotten)
- [Travis - a distributed build server tool for the Ruby community] (http://svenfuchs.com/2011/2/5/travis-a-distributed-build-server-tool-for-the-ruby-community) - Introductory blog post about the original idea (Sven Fuchs)