dstrelau / cijoe forked from defunkt/cijoe

CI Joe is a simple Continuous Integration server.

This URL has Read+Write access

commit  9acd121ef09678a438467d95c909d03df3258920
tree    c9cf33bd5c4c68e7b6f97b057050443d93f466f6
parent  456eb4960d5705de3a2c091d7a9d3f43d5d372ea
cijoe /
name age message
file LICENSE Wed Aug 05 20:05:34 -0700 2009 mit [defunkt]
file README.markdown Loading commit data...
directory bin/ Wed Aug 05 19:18:00 -0700 2009 not convinced -e does anything [defunkt]
file deps.rip Wed Aug 05 17:54:43 -0700 2009 add choice, specify host / port [defunkt]
directory lib/
README.markdown

CI Joe

Joe is a Continuous Integration server that'll run your tests on demand and report their pass/fail status.

Because knowing is half the battle.

The Battle

Quickstart

$ rip install git://github.com/defunkt/cijoe.git 0.1.1
$ git clone git://github.com/you/yourrepo.git
$ cijoe yourrepo

Boom. Navigate to http://localhost:4567 to see Joe in action. Check cijoe -h for other options.

Basically you need to run cijoe and hand it the path to a git repo. Make sure this isn't a shared repo: Joe needs to own it.

Joe looks for various git config settings in the repo you hand it. For instance, you can tell Joe what command to run by setting cijoe.runner:

$ git config --add cijoe.runner "rake -s test:units"

Joe doesn't care about Ruby, Python, or whatever. As long as the runner returns a non-zero exit status on fail and a zero on success, everyone is happy.

Need to do some massaging of your repo before the tests run, like maybe swapping in a new database.yml? No problem - Joe will try to run .git/hooks/after-reset if it exists before each build phase. Do it in there. Just make sure it's executable.

Want to notify IRC or email on test pass or failure? Joe will run .git/hooks/build-failed or .git/hooks/build-worked if they exist and are executable on build pass / fail. They're just shell scripts - put whatever you want in there.

Tip: your repo's HEAD will point to the commit used to run the build. Pull any metadata you want out of that scro.

Other Branches

Want joe to run against a branch other than master? No problem:

$ git config --add cijoe.branch deploy

Campfire

Campfire notification is included, because it's what we use. Want Joe notify your Campfire? Put this in your repo's .git/config:

[campfire]
    user = your@campfire.email
    pass = passw0rd
    subdomain = whatever
    room = Awesomeness
  ssl = false

Or do it the old fashion way:

$ cd yourrepo
$ git config --add campfire.user chris@ozmm.org
$ git config --add campfire.domain github
etc.

Multiple Projects

Want CI for multiple projects? Just start multiple instances of Joe! He can run on any port - try cijoe -h for more options.

HTTP Auth

Worried about people triggering your builds? Setup HTTP auth:

$ git config --add cijoe.user chris
$ git config --add cijoe.pass secret

GitHub Integration

Any POST to Joe will trigger a build. If you are hiding Joe behind HTTP auth, that's okay - GitHub knows how to authenticate properly.

Post-Receive URL

You can find the Post-Receive option under the 'Service Hooks' subtab of your project's "Admin" tab.

Daemonize

Want to run Joe as a daemon? Use nohup:

$ nohup cijoe -p 4444 repo &

Other CI Servers

Need more features? More notifiers? Check out one of these bad boys:

Screenshots

Building

Built

Questions? Concerns?

Issues or the mailing list.

( Chris Wanstrath :: chris@ozmm.org )