duke

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 git@github.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 git@github.com:gotascii/duke.git

Duke will clone the repo and configure it with some defaults.

Configuration

Default Configuration

host: localhost

Used to generate links to cijoes and the main duke url.

port: nil

Used to generate the main duke url.

runner: rake

When duke checks out a new repo it will configure it to build using this command.

pid_dir: tmp/pids

The relative directory duke will use to store cijoe daemon pid files.

log_dir: log

The relative directory duke will use to store cijoe log files.

campfire: {}

Options in the campfire hash are used to configure a new repo.

Custom Configuration

A duke.yml in the config directory will override the defaults.

Per-Project Runner

The duke command-line utility allows you to set the runner for a particular project.

duke runner repo_dir "rake spec"

Command-Line Usage

duke COMMAND [ARGS]

Commands

new [DIR]

Installs duke into DIR. Creates basic directory structure required for duke to do its thing.

add REPO_URL

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.

stop REPO_DIR

Stops the cijoe server running for REPO_DIR.

runner REPO_DIR CMD

Configures REPO_DIR to use CMD for cijoe builds.

build REPO_DIR

Tell cijoe to build the project in REPO_DIR

list

Lists all of the repo_dirs and their cijoe server and build statuses.

Website Interface

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.

passenger start

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.