im-jenkins-utils

Utilities for Informatics Matters CI/CD configuration


Keywords
jenkins
Licenses
CERN-OHL-P-2.0/OFL-1.1-RFN
Install
pip install im-jenkins-utils==1.3.0

Documentation

Informatics Matters Jenkins Utilities

https://travis-ci.com/InformaticsMatters/jenkins-utils.svg?branch=master

The im-jenkins-utils module is a set of utilities employed by Informatics Matters for automated configuration of the Jenkins CI/CD platform. It is a small library that currently simplifies the creation of Jobs, secrets and other actions using python-jenkins and cURL.

It also includes a growing list of convenient wrapper functions to simplify a number of tasks, like checking whether any jobs have failed (or are unstable).

Typical use of the utilities relies on creating an ImJenkinsServer object by providing a suitably formatted URL:

from im_jenkins_server import ImJenkinsServer
j_server = ImJenkinsServer(url)

The url value is typically of the form https://<user>:<token>@<url>.

With this object you can then create a global text secret:

if j_server.is_connected():
    j_server.set_secret_text('mySecretId', 'The Secret Text')

ImJenkinsServer provides the following methods: -

  • set_secret_text()
  • set_secret_file()
  • set_secret_user()
  • get_jobs()
  • set_jobs()
  • get_views()
  • set_views()
  • check_jobs()

Configuration

You can provide configuration in a Python ConfigParser-style file.

At the moment this is used to provide a list of Jenkins Jobs that are excluded during the check_jobs() method. If there are Jobs that can fail, that you're not interested in, then you can provide their names via a configuration file.

To exclude Jobs Build (Experiment) and Run (Experiment) you can provide their names in the check section using the exclude-job key:

[check]
exclude-job: Build (Experiment)
    Run (Experiment)

And then pass the name and path of the configuration file to the server object:

j_server = ImJenkinsServer(url, 'config.ini')

Jobs are assumed to be tolerant of case and the Job names are checked while ignoring the name case.