Just realized that with the new Jenkins Pipeline strategy, Jenkins is actually moving towards a strategy similar to Gradle.
Before Gradle we had Maven which is using a Build by Configuration strategy. The idea is for users to tell Maven how to configure the build but not what it should do.
Before Pipeline, Jenkins Jobs were exactly that: you configured each job to give Jenkins each plugin's config, similar to Maven.
With Pipeline you now code your job in Groovy, specifying the what the job should do.
So you gain a lot of power to more precisely configure your jobs and an easier solution to reuse actions/configs between jobs. But you loose some simplicity and the fact that you could go to any Jenkins instance and understand what each job was doing easily. You now need to read code to understand what it's doing and everyone is going to have a different way of coding their jobs.
FYI I'm currently working on. It's still simple at the moment but it'll become more complex as time passes.
Future will tell us if it's good or bad. FTM, being a dev, I'm enjoying it! I especially like the perks that come with it (but which could have been implemented with a declarative job configuration too):
- Save the CI job in the SCM next to the code
- Ability to automatically add or remove jobs for SCM branches
See also my blog post about.