Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms

Select Status


jenkins-server (20) Versions 0.3.0

This cookbook installs a complete Jenkins server with plugins and is highly configurable with attributes in this cookbook.

cookbook 'jenkins-server', '= 0.3.0', :supermarket
cookbook 'jenkins-server', '= 0.3.0'
knife supermarket install jenkins-server
knife supermarket download jenkins-server
Quality -%


This cookbook installs a complete Jenkins server with plugins and is highly configurable with attributes in this cookbook. It depends on the Jenkins cookbook that is used as foundation.

Supported Platforms

  • CentOS >= 6.6
  • RHEL >= 6.6
  • Ubuntu >= 12.04
  • Debian >= 7.0

These platforms are officially supported, but it will probably work on other platforms to.



  • default['jenkins-server']['admin']['username'] - Sets the username for the administrator user. Default "admin"
  • default['jenkins-server']['security']['chef-vault']['data_bag'] - Name of the data bag for jenkins users
  • default['jenkins-server']['security']['chef-vault']['data_bag_item'] - ID of the data bag to use as administrator user. This data bag must contain a password, private_key and public_key property


  • default['jenkins-server']['nginx']['install'] - Default true. Jenkins is proxied behind Nginx. If you want to disable this, set this attribute to false and default['jenkins']['master']['listen_address'] to Jenkins will then be reachable on port 8080.
  • default['jenkins-server']['nginx']['server_name'] - Server name / hostname. Default "jenkins-server001.local"
  • default['jenkins-server']['nginx']['server_default'] - If the Jenkins server block must be the default/catch all. Default true
  • default['jenkins-server']['nginx']['template_cookbook'] - The cookbook for the Nginx server template. Default "jenkins-server"
  • default['jenkins-server']['nginx']['template_source'] - The source for the Nginx server template. Default "nginx/jenkins.conf.erb"
  • default['jenkins-server']['nginx']['ssl'] - If a SSL connection must be used and forced. Default false
  • default['jenkins-server']['nginx']['ssl_cert_path'] - Path to the SSL certificate. Default nil
  • default['jenkins-server']['nginx']['ssl_key_path'] - Path to the SSL private key. Default nil


  • default['jenkins-server']['java']['install'] - Installs Java with the Java cookbook
  • default['jenkins-server']['ant']['install'] - Installs Ant with the Ant cookbook
  • default['jenkins-server']['git']['install'] - Installs Git with the Git cookbook
  • default['jenkins-server']['composer']['install'] - Installs Composer with the Composer cookbook. If true, the composer_vendors recipe will install the required vendors "squizlabs/php_codesniffer", "phploc/phploc", "pdepend/pdepend", "phpmd/phpmd", "sebastian/phpcpd" and "theseer/phpdox"
  • default['jenkins-server']['composer']['template_cookbook'] - Template cookbook for composer.json. Default "jenkins-server"
  • default['jenkins-server']['composer']['template_source'] - Template source for composer.json. Default "composer/composer.json.erb"


  • default['jenkins-server']['settings']['executors'] - Number of executors. Default the number of cores with a minimum of 2
  • default['jenkins-server']['settings']['slave_agent_port'] - Port number, or 0 to indicate random available TCP port (default) or -1 to disable this service
  • default['jenkins-server']['settings']['system_email'] - System email address
  • default['jenkins-server']['settings']['mailer']['smtp_host'] - Mailer SMTP host. Default "localhost"
  • default['jenkins-server']['settings']['mailer']['username'] - Mailer username. Default "mailer"
  • default['jenkins-server']['settings']['mailer']['password'] - Mailer password. Default "mailer"
  • default['jenkins-server']['settings']['mailer']['use_ssl'] - If the mailer must use SSL. Default true
  • default['jenkins-server']['settings']['mailer']['smtp_port'] - SMTP port. Default "25"
  • default['jenkins-server']['settings']['mailer']['reply_to_address'] - Reply to address. Default node['jenkins-server']['settings']['system_email']
  • default['jenkins-server']['settings']['mailer']['charset'] - Mail charset. Default "UTF-8"


These plugins are configured by default. See the attributes/default.rb for more details. Read for how to add a plugin the section "Adding plugins" further on.

  • General: greenballs, locale, antisamy-markup-formatter, gravatar, ws-cleanup, ansicolor, build-monitor-plugin, git and ant
  • Version control: bitbucket, bitbucket-pullrequest-builder
  • checkstyle, cloverphp, crap4j, dry, htmlpublisher, jdepend, plot, pmd, violations, warnings and xunit


Jenkins jobs can be specified with attributes like:

default['jenkins-server']['jobs']['myjob'] = {
  'cookbook' => 'mycookbook',
  'source' => 'jobs/myjob.xml.erb'

By default the "php-template" job is installed from

Dev mode

If you are developing/testing your (wrapper) cookbook locally, chef-vault communication will be very difficult. If you set an attribute default['dev_mode'] to true then these attributes
will be used to setup Jenkins security.

  • default['jenkins-server']['dev_mode']['security']['password'] - This password is used for the GUI login. Default "admin"
  • default['jenkins-server']['dev_mode']['security']['public_key'] - This public key (paired with the private key) is used for Jenkins CLI authentication
  • default['jenkins-server']['dev_mode']['security']['private_key'] - This private key (paired with the public key) is used for Jenkins CLI authentication


Some attributes that overwrite the Jenkins cookbook attributes:

  • default['jenkins']['master']['version'] - Jenkins version. Default 1.619-1.1
  • default['jenkins']['master']['jvm_options'] - JVM options. Default "-Xms256m -Xmx256m" which sets the memory usage to 256 MB
  • default['jenkins']['master']['listen_address'] - Listen address. Default "". So the Jenkins application is only reachable from localhost or through Nginx.


Some attributes that overwrite the Java cookbook attributes:

  • default['java']['jdk_version'] - Version. Default 7

Adding plugins

You can add plugins to the default['jenkins-server']['plugins'] array.

Add a Jenkins plugin "myplugin" like below. You can specify a version. If you want to configure it, set configure to true
and specify a cookbook and recipe. Use the jenkins_script resource to configure your plugin with a groovy script.
Take a look at the plugin recipes in this cookbook for examples.

default['jenkins-server']['plugins']['myplugin'] = {
  'version' => '1.0',
  'configure' => true,
  'cookbook' => 'mycookbook',
  'recipe' => 'myrecipe_plugin_example'

Plugins can be configured with groovy scripts. Test them at your Jenkins instance:

With the doInspector method from
you can figure out the properties and methods of your plugin. The Jenkins core API documentation
can be found at

def doInspector(obj) {
  def inspector = new groovy.inspect.Inspector(obj)
  def inspectorReport = new StringBuilder()
  inspectorReport << "Object under inspection "
  inspectorReport << (inspector.isGroovy() ? "IS" : "is NOT") << " Groovy!\n"
  inspectorReport << "METHODS\n"
  def methods = inspector.methods
  methods.each {
    inspectorReport << "\t" << it.toString() << "\n"
  inspectorReport << "\nMETA METHODS\n"
  def metaMethods = inspector.metaMethods
  metaMethods.each {
    inspectorReport << "\t" << it.toString() << "\n"
  inspectorReport << "\nPROPERTY INFO\n"
  def properties = inspector.propertyInfo
  properties.each {
    inspectorReport << "\t" << it.toString() << "\n"
  println inspectorReport



Include jenkins-server in your node's run_list:

  "run_list": [

The default recipe includes the following recipies:

if node['jenkins-server']['java']['install']
  include_recipe 'java'

if node['jenkins-server']['ant']['install']
  include_recipe 'ant'

if node['jenkins-server']['git']['install']
  include_recipe 'git'

if node['jenkins-server']['nginx']['install']
  include_recipe 'jenkins-server::nginx'

include_recipe 'jenkins-server::master'
include_recipe 'jenkins-server::security'
include_recipe 'jenkins-server::settings'
include_recipe 'jenkins-server::plugins'
include_recipe 'jenkins-server::jobs'
include_recipe 'jenkins-server::composer'


The MIT License (MIT)


Author:: Pieter Vogelaar (

Dependent cookbooks

jenkins >= 2.3.1
java >= 0.0.0
ant >= 0.0.0
git >= 0.0.0
composer >= 0.0.0
nginx >= 0.0.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.


  • Added configurable plugins
  • Added configurable Jenkins settings
  • Added Java, Ant and Git package


  • Documentation improvements
  • Better attribute defaults


Initial release of jenkins-server

No quality metric results found