Travis – a distributed build system

Travis is an attempt to create an open-source, distributed build system for the Ruby community that:

1. allows open-source projects to register their repository and have their test-suites run on demand
2. allows users to contribute build capacities by connecting a VM that runs a build agent somewhere on their underused servers

Goals

Get a working application up and running that can distribute build requests to manually installed build workers and report back to browsers. Most simplistic UI that ever would make sense for this. Have a restricted set of allowed Github repositories.

Allow people to login through Github OAuth and somehow maintain a list of repositories they’re interested in.

Create VM images so that people can easily install and start build workers on underused or contributed servers.

Status

This code is a spike and everything will change very likely. It is here to try out a few basic concepts and building blocks and ask people to share their opinion.

Each of these components could be replaced with something else, e.g. one could easily use a different Redis server.

Adding a project to Travis

Signup is easy, all you need to do is login using Github OAuth2 and an account will automatically be created.

In order to register a project for builds on Travis just supply a Github service hook using the following URL: http://[YOUR_GITHUB_USERNAME]:[YOUR_TRAVIS_TOKEN]@travis-ci.org/builds

You can get a Travis token on the Travis profile page after signing up.

By default Travis will try to run bundle install and then either bundle exec rake (if you have a Gemfile) or just rake (if you do not have a Gemfile) to run yours tests, but if you require a different command to be run to start your tests you can check in a .travis.yml file to specify a custom build script.

See here for more information on configuration options in the .travis.yml file and this file as an example.

By default Travis will send notification emails to everyone involved in the project on GitHub. You can specify who receives emails in `.travis.yml`: