Define job in project as YML
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
jenkins_yml Retry on any IOError Feb 8, 2017
sandbox Run after_script Oct 3, 2016
tests Notify using POST Feb 6, 2017
.gitignore Update ignore file Aug 1, 2016
README.rst Support disabled param Oct 7, 2016
circle.yml Render freestyle job Jul 12, 2016
setup.py Version 2.34 Feb 8, 2017
tox.ini Render freestyle job Jul 12, 2016

README.rst

Define jobs from project

Render Jenkins job and execute commands from jenkins.yml. These two steps are completely independant.

jenkins_yml provide a python API to render a Jenkins job XML config from a YAML payload. It does not manage Jenkins I/O to effectively create the job. See Jenkins EPO to create jobs and schedule builds from GitHub.

Finally, jenkins_yml provide a simple yet pluggable CLI script to executes de tests commands from jenkins.yml.

Jenkins Job features

The purpose of Jenkins YML is not to expose all Jenkins features, but to setup a sane default set of features you expect from a CI, and ask you the question you value.

  • Define parameters and default values.
  • Define matrix job axis.
  • Define periodic job.
  • Target Jenkins node per build.
  • Search git clone reference in /var/lib/jenkins/references/<owner>/<repository>/. It's up to you to create a mirror clone here or not.
  • Set GitHub commit status to pending.
  • Parameterized revision.
  • Define after_script, always runned after build, even on abort.
  • Collect arctefacts from _ci/ directory. Full path is available in CI_ARTEFACTS env var.
  • Reads XUnit XML from _ci/xunit*.xml.
  • Reads coverage report from coverage.xml.
  • Globally disable jobs from Jenkins.

Setup

On your Jenkins executor, pip3 install jenkins-yml and then use jenkins-yml-runner as shell command.

jenkins.yml format

Put a jenkins.yml file at the root of the project. This file contains a mapping of JOB_NAME to scripts. For example:

app-lint: |
  flake8 app/

app-tests:
  axis:
    TOXENV: [py27, py34, py35]
  script: |
    tox -r

app-doc:
  script: |
    tox -e sphinx -r

To test a job, simply run:

JOB_NAME=app-test jenkins-yml-runner