I'm working on a story to package the discovery plugin[1] as an RPM, but
want to discuss how we distribute plugins more generally.
While I think packaging a few common plugins as RPMs is useful for
people who either a) prefer OS packages instead of gems, b) don't have
direct internet access, we should still work on better OS independent
support for plugins. I'd quite like something similar to Jenkins' level
of support for installing and maintaining them via a vendored installation.
However for RPMs specifically, I'd propose the following:
- we encourage plugin authors to move stable and/or popular plugins
into the 'theforeman' GitHub organisation. Discovery has already done this.
1a) we add a GitHub team for them to retain commit and administrative
access. This is similar to Jenkins[2], and it allows another volunteer
to easily take over maintenance if the author moves on.
1b) plugins must accept a standard "release" script in the repo that can
do combined gem + RPM releases into koji, similar to the
foreman-katello-engine script[3].
-
plugins have separate release schedules to Foreman, entirely up to
the maintainer -
we create a new /plugins repo on yum.tf.org with the following layout:
/plugins/1.1 plugins compatible with Foreman 1.1
/plugins/1.2 etc.
/plugins/1.3 if it's compatible with nightlies and eventual 1.3
We create a corresponding set of tags in Koji and set up continuous
publishing into the above repos:
foreman-plugins-1.1-{rhel6,fedora18}
foreman-plugins-1.2-{rhel6,fedora18}
foreman-plugins-1.3-{rhel6,fedora18} etc.
-
the maintainer decides which tag(s) it's appropriate to release into
(using our provided script), based on the current compatibility of the
plugin in relation to Foreman. We can improve this later with metadata
in the plugin too. -
users are then able to configure the plugin repo for their current
release (and we could do this in the installer) and can install and
update plugins as and when they wish to.
Thoughts?
[1] https://github.com/theforeman/foreman_discovery
[2] https://wiki.jenkins-ci.org/display/JENKINS/Hosting+Plugins
[3]
https://github.com/Katello/foreman-katello-engine/blob/master/rel-eng/release.sh