Jenkins is an extenable open source continuous
integration server that monitors executions of
repeated jobs. The focus of Jenkins is the
building/testing of software project continuously,
and monitoring executions of externally-run jobs.
More information at http://jenkins-ci.org/.
This charm provides the Jenkins master service,
and when paired with the jenkins-slave charm
provides an easy way to deploy Jenkins on Ubuntu
server, and scale out Jenkins slaves.
This charm (along with its companion, jenkins-slave) provides an easy way to deploy Jenkins on Ubuntu server and scale out Jenkins slaves.
This charm provides a Jenkins Server which can be accessed, after exposing, on http://
To deploy Jenkins server you will also need to deploy the jenkins-slave charm. This can be done as follows:
This charm (along with its companion, jenkins-slave) provide an
easy way to deploy Jenkins on Ubuntu server and scale out
juju deploy jenkins juju deploy -n 5 jenkins-slave juju add-relation jenkins jenkins-slave
The default password for the 'admin' account will be auto-generated.
You can set it using:
juju set jenkins password=mypassword
Always change it this way - this account is used by the charm to manage slave configuration.
Then feel free to expose your Jenkins master:
juju expose jenkins
The Jenkins UI will be accessible on http://
Scale out Usage
The main method to use the Jenkins service at scale is to add units to the jenkins-slave, as illustrated in the example usage:
juju deploy -n 5 jenkins-slave
Here the "-n 5" is adding 5 additional units (instances) to the jenkins-slave. Of course that "5" can be as large as you wish or you cloud provider supports. Additional information on scaling services with add-unit can be found at Juju Scaling Docs.
You have already seen the password configuration in the "Usage" section. Some other interesting config options are plugins and release. You can add config options via the command line with juju set or via a config file. More information on Juju config is at Juju Config Docs.
Plugin config example
juju set jenkins plugins=htmlpublisher view-job-filters bazaar git
Release config example
juju set jenkins release=trunk
You could also set these config options via a config.yaml on jenkins deploy. For example your config.yaml could look like
jenkins: plugins: htmlpublisher view-job-filters bazaar git release: trunk
You would then deploy jenkins with your config such as:
juju deploy --config config.yaml jenkins
Extending this charm
If you wish to perform custom configuration of either the master
or slave services, you can branch this charm and add install hooks
These will be executed when the main install, config-changed or
upgrade-charm hooks are executed (as the config-changed and
upgrade-charm hooks just call install)..
Additional hooks are executed in the context of the install hook
so may use any variables which are defined in this hook.
Bundling Jenkins for Offline Environments
The charm allows specifying specific installation sources to
pull the Jenkins package from (distro, lts, trunk). Installing
from sources other than the distro requires pulling Jenkins
packages from the upstream, remote Jenkins repositories. Users
may wish to deploy a non-distro Jenkins package in an environment
with limited outbound network access. This can be accomplished
by "bundling" a Jenkins package with a local copy of this charm
prior to deploying. Simply branch the charm locally, create a
directory named "files" in the top-level of the tree. Copy the
desired Jenkins package there as "jenkins.deb" and the charm will
install Jenkins using this binary package. This will override the
release config setting. Newer Jenkins packages may be found at:
Jenkins Project Information
- (string) Admin user password - used to manage slave nodes so please don't change in Jenkins.
- (string) Space separated list of plugins to install
- (string) Set to no to allow downloading from an invalid https site.
- (string) Site to download plugin .hpi files from.
- (string) Source of Jenkins, options include: - distro: only use the Ubuntu distribution - this is the default and only works on >= Oneiric. - lts: use the most recent Jenkins LTS release. - trunk: use the most recent Jenkins release.
- (string) Set this to yes to remove any plugins not listed in plugins from the installation.
- (string) Tooling to deploy alongside jenkins
- git gcc make bzr
- (string) Admin user username - used to manage slave nodes so please don't change in Jenkins.