Skip to content
A lightweight continuous integration server for Ruby apps
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib
public
raw It works Jun 18, 2010
spec
views
.gems
.gitignore
Gemfile
README.markdown
Rakefile
config.ru
init.rb

README.markdown

Continuum

Continuum is a lightweight continuous integration server for Ruby. It runs on Sinatra and can run RSpec test suites on Git repositories. It is inspired by Continuity, but strives to be simpler and prettier.

Install Continuum

Installing Continuum is fairly straightforward:

$ git clone https://github.com/flipsasser/continuum
$ cd continuum

TODO: Ideally this will turn into

$ gem install humiliation
$ cd RAILS_ROOT
$ humiliate

... which might generate a .humiliate file and produce a repository they can push to Heroku or its friends. Not 100% sure on that one.

At this point, you can either run it locally:

$ rackup config.ru

... or move it to Heroku:

$ heroku create my-ci-server
$ git push heroku master

Wowsa! Done! Now open up http://localhost:9292/ (or http://my-ci-server.heroku.com if you opted for Heroku) and try adding a few Git repos. Simple! Fun! Easy!

init.rb

Continuum is configured similarly to Continuity - in an init.rb file you store in the app's root. The default init.rb will work with Heroku, or just about any other server where you have write-access to the app's directory:

Continuum.configure do |config|
  config.storage = "tmp"
  config.workers = 1
end

Looks cool, right? Until you realize what that's really saying is:

Continuum.storage = "tmp"
Continuum.workers = 1

... because it's simple, remember?

Continuum Configuration Options

Continuum supports a few simple configuration options. They are:

  • storage

    Tells Continuum where to stash builds and pids. Defaults to app_root/tmp, which will work on most platforms (including Heroku). Pass it a relative path (like tmp/continuum/storage) to store in app_root/tmp/continuum/store, or a full path to specify elsewhere in the system (e.g. /tmp/continuum/)

  • workers

    Tells Continuum to keep x workers running at a time. Defaults to 1, and it's probably all you'll need at the outset. Workers are just forks of Continuum that run the latest build.

App-specific Configuration Options

Continuum also works off of a .continuum file in your app's root, which is a YAML-formatted set of overrides. You can specify all kinds of handy-dandy things there, and Continuum will do its best to guess the rest. For example!:

---
suite: rspec
command: RAILS_ENV=test rake db:test:prepare && rake spec
db: "pgsql://my_app_test"

This will tell Continuum to run this app's Rspec suite, and use command-line Rake tasks (instead of attempting to run them directly using Rspec). It also specifies testing with a PostgreSQL database instead of the default in-memory SQLite3 database. Here are all of the overrides you can add to .continuum:

HAHAHAHA! TODO BITCHES!

Philosophy

Continuum was built on a four-person project, where someone wasn't running rake spec before they commit. So with that in mind, Continuum builds EVERY SINGLE COMMIT on the repository. More importantly, it keeps track of failing builds - and the user who commits them.

Something went wrong with that request. Please try again.