collective.recipe.jenkinsjob

Buildout recipe to manage jobs on a remote Jenkins CI server.


License
GPL-2.0+
Install
pip install collective.recipe.jenkinsjob==1.0-alpha1

Documentation

Introduction

Simple buildout recipe that generated three commands push a jenkins job, pull a jenkins job and trigger build on jenkins job.

Recipe enables developer to sync configuration on Jenkins with buildout configuration.

Workflow to be used with the recipe:

  • create and configure a job through the web
  • run pull jenkins job
  • later, make more changes the job through the web
  • run pull jenkins job and use your SCM to diff the config
  • (optional) push configuration to any other server or use it as restore
  • (optional) trigger build, because you are too lazy to wait n minutes for cronjob

Supported options

The recipe supports the following options:

hostname (required)
Hostname of the Jenkins instance.
jobname (required)
Name of the Jenkins job.
jobconfig (default: jenkins_config.xml)
Name for XML configuration file for the Jenkins job, relative to buildout directory.
username (required)
Jenkins username
password (required)
Jenkins password
port (default: 80)
Jenkins port

Example usage

We'll start by creating a buildout that uses the recipe:

>>> write('buildout.cfg',
... """
... [buildout]
... parts = jenkins-job
...
... [jenkins-job]
... recipe = collective.recipe.jenkinsjob
... hostname = %(hostname)s
... jobname = %(jobname)s
... jobconfig = %(jobconfig)s
... username = %(username)s
... password = %(password)s
... """ % {
...     'hostname' : 'jenkins.plone.org',
...     'jobname' : 'Plone42',
...     'jobconfig': 'plone.xml',
...     'username': 'chuck',
...     'password': 'norris'})

Running the buildout gives us:

>>> buildout_output_lower = system(buildout).lower()
>>> "installing jenkins-job" in buildout_output_lower
True
>>> "generated script" in buildout_output_lower
True
>>> "bin/jenkins-job-push" in buildout_output_lower
True
>>> "bin/jenkins-job-pull" in buildout_output_lower
True
>>> "bin/jenkins-job-trigger-build" in buildout_output_lower
True