Built on top of Jenkins. The power, vast amount of plugins and large community of the popular CI server all wrapped up in a great experience.
Controlled by Hubot. Day to day operations are exposed as simple Hubot commands that the whole team can use.
Designed for GitHub. Janky creates the appropriate web hooks for you and the web app restricts access to members of your GitHub organization.
Start by setting up a new Jenkins job and GitHub web hook for a repository:
hubot ci setup github/janky
setup command can safely be run over and over again. It won't do
anything unless it needs to. It takes an optional name argument:
hubot ci setup github/janky janky-ruby1.9.2
All branches are built automatically on push. Disable auto build with:
hubot ci toggle janky
Run the command again to re-enable it. Force a build of the master branch:
hubot ci build janky
Of a specific branch:
hubot ci build janky/libgit2
Different builds aren't relevant to the same Campfire room and so Janky lets you choose where notifications are sent to. First get a list of available rooms:
hubot ci rooms
Then pick one:
hubot ci set janky room The Serious Room
Get the status of a build:
hubot ci status janky
hubot ci status janky/libgit2
hubot ci status
Finally, get a quick reference of the available commands with:
Janky is designed to be deployed to Heroku.
Grab all the necessary files from the gist:
$ git clone git://gist.github.com/1497335 janky
Then push up it to a new Heroku app:
$ cd janky $ heroku create --stack cedar $ bundle install $ git add Gemfile.lock $ git commit Gemfile.lock -m 'Adding required Gemfile.lock file for Heroku deploy' $ git push heroku master
After configuring the app (see below), create the database:
$ heroku run rake db:migrate
Janky is configured using environment variables. Use the
$ heroku config:add VARIABLE=value
JANKY_BASE_URL: The application URL with a trailing slash. Example:
JANKY_BUILDER_DEFAULT: The Jenkins server URL with a trailing slash. Example:
http://jenkins.example.com/. For basic auth, include the credentials in the URL:
JANKY_CONFIG_DIR: Directory where build config templates are stored. Typically set to
JANKY_HUBOT_USER: Login used to protect the Hubot API.
JANKY_HUBOT_PASSWORD: Password for the Hubot API.
JANKY_GITHUB_USER: The login of the GitHub user used to access the API. Requires Push and Pull privileges.
JANKY_GITHUB_PASSWORD: The password for the GitHub user.
JANKY_GITHUB_HOOK_SECRET: Secret used to sign hook requests from GitHub.
JANKY_CAMPFIRE_ACCOUNT: The name of your Campfire account.
JANKY_CAMPFIRE_TOKEN: The authentication token of the user sending build notifications.
JANKY_CAMPFIRE_DEFAULT_ROOM: The name of the room where notifications are sent by default. Example: "Builds".
To restrict access to members of a GitHub organization, register a new
OAuth application on GitHub
with the callback set to
$JANKY_BASE_URL/auth/github/callback then set
a few extra settings:
JANKY_SESSION_SECRET: Random session cookie secret. Typically generated by a tool like
JANKY_AUTH_CLIENT_ID: The client ID of the OAuth application.
JANKY_AUTH_CLIENT_SECRET: The client secret of the OAuth application.
JANKY_AUTH_ORGANIZATION: The organization name. Example: "github".
Install the janky script in your Hubot
then set the
HUBOT_JANKY_URL environment variable. Example:
http://user:firstname.lastname@example.org/_hubot/, with user and password
Custom Build Configuration
The default build command should suffice for most Ruby applications:
$ bundle install --path vendor/gems --binstubs $ bundle exec rake
For more control you can add a
script/cibuild at the root of your
repository for Jenkins to execute instead.
For total control, whole Jenkins'
config.xml files can be associated
with Janky builds. Given a build called
windows, Janky will try
config/jobs/windows.xml.erb before falling back to the default
config/jobs/default.xml.erb. After updating or adding
a custom config, run
hubot ci setup again to update the Jenkins
Get your environment up and running:
Create the databases:
$ mysqladmin -uroot create janky_development $ mysqladmin -uroot create janky_test
Create the tables:
$ RACK_ENV=development bin/rake db:migrate $ RACK_ENV=test bin/rake db:migrate
Seed some data into the development database:
$ bin/rake db:seed
Start the server:
Open the app:
$ open http://localhost:9393/
Run the test suite:
Fork the Janky repository on GitHub and send a Pull Request.
Copyright © 2011, GitHub, Inc. See the
COPYING file for license
rights and limitations (MIT).