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 jenkinsci-users+unsubscr...@googlegroups.com.
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