Hi

Is there any way of managing the plugins installed in Jenkins other than 
through the GUI interface?

Ideally I would like to be able to define a list of plugins (names, URLs, 
version numbers) in a text file, which would be read by Jenkins and ensure 
that the correct plugins are installed (and warn/error of any discrepancies 
or extraneous plugins). Ideally, something similar to a `pom.xml`, or 
node's `package.json`, or python's `requirements.txt`.

I'd be happy with such a tool if it were a standalone executable, or 
another Jenkins plugin, or a feature of some Config Management tool (e.g. 
Puppet, Chef, Ansible, Salt).

I know that plugins can be installed by copying .hpi/.jpi files to 
~jenkins/plugins/. This works for backing up, mostly, but is far from 
ideal. Problems I have with this:

* plugin bloat: no record of when/why a plugin was installed or if it 
should be removed; over time a large number of unused plugins acccumulate
* version drift: no record of when/why a plugin was updated, or why a 
particular version was changed; in most cases you just use the most up to 
date version from when you installed the plugin, and upgrading in the 
future is difficult to track
* custom plugins: if I've recompiled a .hpi file for a fork of a plugin 
I've made, it's tough to tell the difference between my version and the 
version in the update-center

I'm a big fan of infrastructure-as-code. Particularly, I like being able to 
see a history of infrastructure changes in a source controlled repository. 
Source control of Jenkins plugins would allow

* informative commit messages
* code review for why plugins are being added
* easier rollbacks to previous good states when upgrading

Being able to deploy a Jenkins master from configuration would provide a 
bunch of other benefits:

* easier to deploy new Jenkins masters (for testing, disaster recovery, 
complex multi-master configurations)
* indicate the source of the plugin (i.e. the update-center, a github repo, 
or an internal artifact manager)
* indicate the correct version to use

Is there any existing tool or framework that would provide all of this? Or 
will I have to roll my own?

Thanks!

-- 
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/64dbe471-e394-4eab-b0fc-8e2e9afbbf23%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to