Jenkinsfile-runner for use in a multibranch pipeline setup
Hi Jenkins Users!
I'm trying to understand how I would use https://github.com/jenkinsci/jenkinsfile-runner in our environment. My goals are to convert our existing Jenkins set up within my company that relies on plugins to be installed centrally on the main Jenkins to a set up whereby each team defines their own custom Jenkins with their own plugins installed. It strikes me that the Jenkinsfile-runner project would be ideal for this as it allows you to run Jenkins headless (so effectively Jenkins within Jenkins) and additionally allows you to customise that version of Jenkins so that you may request version B of a plugin but that won't ever impact another user using version A.
Allow me to explain a bit more. Our current set up is as follows:
Central Jenkins system shared across the company.
Separate projects per team in the company.
Both shared and dedicated nodes.
Teams are encouraged to run Pipelines and target a node via a label that corresponds to the capabilities of that node e.g. java, php, android
Infra (understandably) don't want to maintain numerous Jenkins across the estate hence the initial implementation of a shared single Jenkins.
Because of this if I want to update or introduce a new plugin Infra often say this needs to be tested and ratified by all the other users of Jenkins (i.e. every team) incase it introduces an incompatibility to their builds (also understandable).
A few of us thought that one team's build should not impact another team's build and we should be able to select the configuration / plugin set based on our needs.
However we're not sure how to navigate that whilst also not giving another maintenance burden to the Infra team.
Our pipelines are multibranch aware which is incredibly useful for our teams as we can define different builds dependent on branch in a single pipeline. It's also useful for us to see build artefacts / reports per branch e.g. we can see the test trend for develop over time. I'm not sure how to think of this in Jenkinsfile-runner terms.
Do I create a multibranch pipeline project on the central Jenkins server?
Is it a pipeline project at all? Or is it a simple freestyle project?
How do we replicate the functionality of reporting trends on a per branch basis?
Apologies if this is the wrong place to discuss this, let me know and I can move it somewhere more appropriate.