[Fuego] Problems with Jenkins in latest master

Tim.Bird at sony.com Tim.Bird at sony.com
Fri Mar 30 00:51:25 UTC 2018

Warning - long read ahead...

OK - I took a look at the situation with Jenkins.  It's a big thorny mess.

We currently install Jenkins 2.32.1 in our Fuego Docker image,
but we load jenkins plugins from an online plugin hub.

The description setter plugin  that is now being downloaded from
that hub appears to require Jenkins 2.60.3.  A few other Jenkins
plugins that are required by plugins or features in the default install
also require 2.60.3.  This includes the following:
 - Matrix Authentication
 - Pipeline API
Some other plugins, that are dependent on those, also fail to
load correctly:
 - Junit plugin (need Pipeline API)
 - Matrix Project (Needs Junit plugin)

Also, the description setter plugin has changed its behavior,
so that it now is in the build step instead of the post-build
step for a Jenkins job.  This means that our job creation
code in ftc has to change, and we might not be able to use
the description setter plugin the way we have been in the past.
It appears that the ability to specify descriptions for when 
the job fails is not available any more.

I tried upgrade Jenkins, but there are some wrinkles:
 - Jenkins, from version 2.54 on, require openjdk-8,
which is not in the default configuration of Jessie (which is
the base image for our Docker image).
- I tried upgrading our Docker image to 'Stretch', which is
a newer version of Debian which does have openjdk-8,
and ran into a few other miscellaneous issues.

In the end, it might be a lot of work to address this issue,
and we might still have quite a bit of rework to do to get
the description setter working again - to show links to
Fuego test artifacts for each build.

Oh, and did I mention that the flot plugin (our Javascipt
charting plugin for Jenkins) is also having problems with
the latest Jenkins version (2.113)?

There appear to be 2 options from here:
 1) use an old description setter plugin, that still works
in the post-build phase.
The strategy here would be to grab an old copy of the description setter
plugin, and any other 2.32 -era plugins, and statically include them
in our fuego repository - then instead of installing plugins from the
online jenkins plugin hub do the install from local files in the docker container.
Also, freeze our usage (at least for the 1.3 release) to Jenkins 2.32.1.

2) migrate everything to latest Jenkins and plugins, and rework ftc to
deal with the new description setter.  If the description won't work at all
in its new form, then rework how we do description setting in
general.  Under JTA this used to be done with a groovy script, and we
might be able to resurrect that code and still use the system we have now.
Also, we would need to fix the flot plugin, and address any other issues
that come up with a massive upgrade to several major Fuego components.
Ugh also.

To be honest I don't like how the description setter plugin works anyway,
as it can only define the descriptions statically (well, with variables), at job
creation time, instead of actually reacting to the state of the build at job
execution (build/run) time.  In the long run, I'd rather generate a description
file for the job  as a separate artifact in our run directory, and then
if we're using Jenkins apply it to the run.  If we're using some other interface
we could use it there as well.

Either of these approaches is going to take some time to implement and
test.  It looks like 1.3 will be delayed a bit while we sort this out.

Let me know what you think, and what approach you think we should take.

 -- Tim

More information about the Fuego mailing list