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
Copyright © 2010 Justin Marney. See LICENSE for details.