I work for a very large organization, on a project with many teams, working 
on many microservices, all of which were generated from a home-grown 
application template system.  Most of the Java-based microservices have a 
very similar build process. In fact, most of the projects have an identical 
Jenkinsfile, with some small parameter value differences (which are set in 
a different system, not in the Jenkinsfile).

Over time, we've evolved the template and common features, including 
modularizing and cleaning up the Jenkinsfile.  A small shared library was 
developed, to hold some of the core function definitions, even though the 
basic structure of the build was still "in-line" in the Jenkinsfile.

The latest version of this template has taken reuse just about as far as it 
can go.  The entire Jenkinsfile for most projects will be a small 
properties block to override some defaults (that are not set in the other 
system), along with a single method call, including the shared library 
reference.  The shared library has now expanded to specify the entire build 
process, from that one method call.

There are a handful of services in the collection that will still have some 
custom changes (all in my domain), so I will reference a branch of the 
shared library in those Jenkinsfiles.  If my custom changes are eventually 
accepted as standard (many of them have been), then they will be merged to 
the master branch and I can change our Jenkinsfiles to use the master 
branch.

I'm describing all of this for background.  What I'm asking the community 
is, is this a reasonable strategy?  I can't help the feeling that this is 
taking reusability a bit too far. I can't give any technical arguments 
against it, so I'm just looking for some perspective.

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/f959c755-7a1a-499d-bad7-f0df8da44ce6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to