public
Fork of cpjolicoeur/cerberus
Description: Continuous Integration tool for ruby projects
Homepage: http://cerberus.rubyforge.org
Clone URL: git://github.com/notch8/cerberus.git
notch8 (author)
Tue Jan 06 09:25:15 -0800 2009
commit  a1314a16bc7a013512275d401a9a88a7db9e1939
tree    66e2b0183525fae80c80d0b92d23c4da4efa11e4
parent  9b2782f834da6d47c2a4239e13d9647174e75620
name age message
file .gitignore Wed Dec 31 06:37:35 -0800 2008 updates for new webgen 5.x system [cpjolicoeur]
file CHANGES Wed Dec 24 06:25:23 -0800 2008 updates to changelog and Rakefile git-svn-id:... [cpjolicoeur]
file LICENSE Sat Jul 15 12:39:51 -0700 2006 Improved Configuration mechanism Improved tests... [anatol]
file README Mon Dec 22 08:50:28 -0800 2008 documentation updates git-svn-id: svn+ssh://r... [cpjolicoeur]
file Rakefile Wed Dec 31 06:37:35 -0800 2008 First step in WebGen migration [anatol]
file TODO Thu Jan 25 12:35:29 -0800 2007 Prepare to 0.3.3 release git-svn-id: svn+ssh:... [anatol]
directory bin/ Sun Dec 21 16:06:30 -0800 2008 cerberus bin file should have shebang line gi... [cpjolicoeur]
directory doc/ Wed Dec 31 06:37:35 -0800 2008 updates for new webgen 5.x system [cpjolicoeur]
directory lib/ Tue Jan 06 09:25:15 -0800 2009 Fixed rspec compatability of rake builder [notch8]
directory test/ Sun Dec 21 16:06:45 -0800 2008 Improved git support git-svn-id: svn+ssh://ru... [cpjolicoeur]
README
Cerberus is a Continuous Builder software. Cerberus could be periodically run from scheduler and check if application 
tests are broken. If it happens then Cerberus will send notification to developers. Cerberus perfectly works both on 
Windows and *nix platforms.

For more CI theory read this document from Martin Fowler 
http://www.martinfowler.com/articles/continuousIntegration.html.

Requirements: 
  ruby - 1.8.2 or higher
  rake - 0.7 or higher

What 'Cerberus' name means?
Quote from Wikipedia (http://en.wikipedia.org/wiki/Cerberus)

Cerberus or Kerberos (Kerberos, demon of the pit), was the hound of Hades-a monstrous three-headed dog (sometimes said 
to have 50 or 100 heads) with a snake for a tail and innumerable snake heads on his back.
He guarded the gate to Hades (the Greek underworld) and ensured that the dead could not leave and the living could not 
enter. His brother was Orthrus. He is the offspring of Echidna and Typhon.


So Cerberus will guard your tests and not allow your project to go to the world of dead. 

There are several CI solutions already present, why do you need to use Cerberus?
Main advantages of Cerberus over other solutions are:
 1) Cerberus could be installed on any machine not only where SVN repository located.
 2) Cerberus works not only for Rails projects, but for any other Ruby projects as well as for other platforms (Maven2 
 for Java)
 3) Cerberus multiplatform solution: it runs excellent both on *nix and Windows.
 4) Cerberus distributed via RubyGems, so it is very easy to install and very easy to update to the latest stable 
 version
 5) Cerberus very easy to start using. Just type 'cerberus add PROJECT_URL|PROJECT_DIR'
 6) Cerberus is lightweight solution: most of the time ruby process even not runs - Rake runs only in case if changes in 
 project sources are found.

 
To use Cerberus it is very easy. First install it. Easiest way to do it through RubyGems package manager.

'gem install cerberus'

or get Cerberus distribution package right from download page http://rubyforge.org/frs/?group_id=1794&release_id=6442

then you need to add project that will be watched by Cerberus. Do it by

cerberus add (DIR|SVN_URL) APPLICATION_NAME=some_app RECIPIENTS=dev1@project.com,dev2@project.com

as second parameter you could pass URL to subversion repository or directory with working SVN folder.

Go to ~/.cerberus and edit config.yml file (only once after installing Cerberus). Enter your configuration options here 
like email server, password, user_name and other options. See ActiveMailer description - Cerberus uses it as 
notification layer. My config file looks like this

publisher:
  mail:
    address: mail.somesever.com
    user_name: anatol
    password: anatol
    domain: somesever.com
    authentication: login

Also check ~/.cerberus/config/<APPLICATION_NAME>.yml and make sure that you have right options.

And then run Cerberus 

cerberus build APPLICATION_NAME    # Run project

or

cerberus buildall     # Run all available projects


It will check out latest sources and run tests for your application. If tests are broken - recipients will receive 
notifications.

But of course better run Cerberus automatically from Cron. Run Cerberus for project each 10 minutes would be ok.

== Features

Cerberus currently supports the following SCM tools: 

  * Subversion
  * Git
  * Darcs
  * Perforce
  * CVS

Cerberus currently supports the following notification systems: 

  * Email
  * Jabber
  * IRC
  * RSS
  * Campfire
  * Twitter

Cerberus currently supports the following build systems: 

  * Rake
  * RSpec
  * Rant
  * Maven2
  * Bjam

== License

This plugin is licensed under the MIT license. Complete license text
is included in the LICENSE file.

== Author

This software was created by Anatol Pomozov <anatol.pomozov@gmail.com> and is
located at http://cerberus.rubyforge.org.

== Contributors

Craig P Jolicoeur <http://github.com/cpjolicoeur>
Rob Kaufman <http://github.com/notch8>