Duke helps you manage multiple CIJoe instances. It comes with a command-line interface and a web interface.
Installation & Setup using RVM
Here is a way you could setup duke on your CI server using RVM.
Use my version of cijoe because it works in 1.9 and works with duke.
git clone email@example.com:gotascii/cijoe.git gem build cijoe.gemspec
Install cijoe into the global gemset so it is available in all project gemsets.
rvm gemset use global gem install cijoe-0.5.0.gem
Create a duke gemset and install duke.
rvm gemset create duke rvm gemset use duke gem install duke
Create a new duke installation.
duke new .
Inside the duke directory use the command-line interface to add a new repository.
duke add firstname.lastname@example.org:gotascii/duke.git
Duke will clone the repo and configure it with some defaults.
Used to generate links to cijoes and the main duke url.
Used to generate the main duke url.
When duke checks out a new repo it will configure it to build using this command.
The relative directory duke will use to store cijoe daemon pid files.
The relative directory duke will use to store cijoe log files.
Options in the campfire hash are used to configure a new repo.
A duke.yml in the config directory will override the defaults.
The duke command-line utility allows you to set the runner for a particular project.
duke runner repo_dir "rake spec"
duke COMMAND [ARGS]
Installs duke into DIR. Creates basic directory structure required for duke to do its thing.
Clones the repo at REPO_URL into the duke directory and configures it to run cijoe.
start REPO_DIR PORT
Starts a cijoe server set to build the repo in REPO_DIR on port PORT.
Stops the cijoe server running for REPO_DIR.
runner REPO_DIR CMD
Configures REPO_DIR to use CMD for cijoe builds.
Tell cijoe to build the project in REPO_DIR
Lists all of the repo_dirs and their cijoe server and build statuses.
Duke provides a way to add, start, and stop your cijoes. It also provides a nice list of all your cijoes and their current build status. It looks like the following screenshot.
The duke installation directory contains a config.ru and the easiest way to get rolling is by using passenger standalone. Just start up passenger inside the duke directory.
Note on Patches/Pull Requests
Fork the project.
Make your feature addition or bug fix.
Add tests for it. This is important so I don't break it in a future version unintentionally.
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
Send me a pull request. Bonus points for topic branches.
Copyright © 2010 Justin Marney. See LICENSE for details.