Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rgaidot/travis
https://github.com/rgaidot/travis
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/rgaidot/travis
- Owner: rgaidot
- License: mit
- Created: 2011-02-14T00:52:33.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2011-02-13T19:44:53.000Z (almost 14 years ago)
- Last Synced: 2024-10-31T13:23:13.734Z (3 months ago)
- Language: JavaScript
- Homepage: http://travis.heroku.com/
- Size: 1.04 MB
- Stars: 1
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.textile
- License: LICENSE
Awesome Lists containing this project
README
h1. Travis - a distributed build system
Travis is an attemp 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 serversIf you are interested in Travis please subscribe to the "Google group":http://groups.google.com/group/travis-app and check out my introductional blog post over here: "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
h2. Overview
Travis consists of four main parts:
* A "Backbone.js":http://documentcloud.github.com/backbone single-page application that runs client side.
* A Rails 3 application that serves to the in-browser application and takes pings from Github.
* A "Resque":https://github.com/defunkt/resque worker for running a project's test suite remotely.
* A websocket server for tailing build results to the browser. (This server is currently started within the Rails app process.)To get an idea: "1:20 quick demo screencast (spike 2)":http://www.youtube.com/watch?v=mNOwCJhjWAw
!https://github.com/svenfuchs/travis/raw/master/docs/travis.spike-2.png!
h2. 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.h2. 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.
Nonetheless we currently have a working demo application running on "http://travis.heroku.com":http://travis.heroku.com which uses
* "RedisToGo":http://redistogo.com as a Redis store
* "Pusher":http://pusherapp.com as a Websocket server
* A virtual server granted by "Avarteq":http://avarteq.de for running a "Resque":http://github.com/defunkt/resque worker.Each of these components could be replaced with something else, e.g. one could easily use a different Redis server.
h2. Usage
Currently one can sign in via 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 for the following URL: @http://[YOUR_GITHUB_USERNAME]:[YOUR_TRAVIS_TOKEN]@@@travis.heroku.com@
You can get a Travis token on the Travis profile page by signing in to your application via Github OAuth2.
One can check in a file @.travis.yml@ in order to specify a custom build script (by default @rake@ will be executed). See "this file":https://github.com/svenfuchs/routing-filter/blob/master/.travis.yml as an example.
Please note that this is an experimental installation.
h2. Installation
To install your own instance of Travis you need to supply various configuration settings:
$ cp config/travis.example.yml config/travis.ymlIn order to push these settings to Heroku you can use:
$ rake heroku:configStarting a local worker:
$ RAILS_ENV=production VERBOSE=true QUEUE=builds rake resque:workOr using God:
$ cp config/resque.god.example config/resque.god
$ god -c config/resque.godh2. Running the tests
Integration tests are implemented using "Jasmine":http://pivotal.github.com/jasmine and can be run in the browser:
$ RAILS_ENV=jasmine rake db:migrate db:fixtures:load
$ rails s thin -e jasmine
$ open http://localhost:3000To run the unit tests simply do:
$ ruby -Ilib -Itest test/all.rbh2. Previous spike
My first spike was using Nanite for running workers. These materials are now outdated but might be interesting:
* "1:36 quick demo screencast (spike 1)":http://www.youtube.com/watch?v=qdTV-b6BJHA
* "Architecture diagram (spike 1)":https://github.com/svenfuchs/travis/raw/master/docs/travis.spike-1.png