Fetching contributors…
Cannot retrieve contributors at this time
69 lines (42 sloc) 2.11 KB



If you'd like to submit a patch:

  1. Fork the project.
  2. Make your feature addition or bug fix.
  3. Add tests for it. This is important so that it isn't broken in a future version unintentionally.
  4. Commit. Do not touch any unrelated code, such as the gemspec or version. If you must change unrelated code, do it in a commit by itself, so that it can be ignored.
  5. Send a pull request.


Install prerequisites

Install git on your test system.

Install the latest version of Bundler

$ gem install bundler

Clone the project

$ git clone git://

and run:

$ cd berkshelf
$ bundle install

Bundler will install all gems and their dependencies required for testing and developing.

Running unit (RSpec) and acceptance (Cucumber) tests

We use Chef Zero - an in-memory Chef Server for running tests. It is automatically managed by the Specs and Cukes. Run:

$ bundle exec guard start


$ bundle exec thor spec:ci

See here for a quick way to get a testing chef server up.

Debugging Issues

By default, Berkshelf will only give you the top-level output from a failed command. If you're working deep inside the core, an error like:

Berkshelf Error: wrong number of arguments (2 for 1)

isn't exactly helpful...

Specify the BERKSHELF_DEBUG flag when running your command to see a full stack trace and other helpful debugging information.


Once you are ready to release Berkshelf, perform the following:

  1. Update with a new header indicating the version to be released
  2. Examine the diff (example) between master and the previous version. Add all merged Pull Requests to the
  3. Update version.rb to the desired release version
  4. Run bundle update berkshelf
  5. Create a PR and review the version.rb changes and changes
  6. Once the PR is merged to master, run rake release on the master branch