Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-53767

Offer plugin management tooling

    XMLWordPrintable

    Details

    • Epic Name:
      Plugin Management tooling
    • Similar Issues:

      Description

      Jenkins does offer a web UI to manage plugin installation from a live master instance, but in many deployments administrator would like to control installed plugins by version and by tooling, before jenkins master starts.

      • docker official image provides an install-plugins.sh script which evolved far beyond its initial "help script" scope.
      • configuration-as-code implemented plugin installation hack based on PluginSite.Plugin#deploy. (Removed as of v1.8 of JCasC plugin)
      • open-source update center does expose plugins-version.json on casc request so one can manage versions for all hosted plugins, not just latest
      • custom war packager does support plugin installation on his own
      • jenkins evergreen does manage plugin installation based on updates from metadata server, using his own logic implemented by nodejs evergreen client.
      • jenkinsfile-runner does manage plugin installation implemented in Go
      • coreOS provides a groovy script to handle required plugins
      • cloudbees DEV@Cloud uses a set of Chef Ruby recipes for the same purpose
      • etc

       

      Everybody is re-inventing the wheel, partially implementing the "details" of plugin management (signed metadata, artifacts checksums, plugins detached from core, ...). It becomes obvious Jenkins should provide adequate tooling for plugin installation outside a live Jenkins instance. 

        Attachments

          Issue Links

            Activity

            Hide
            ndeloof Nicolas De Loof added a comment -

            > Should be possible to add an optional JCasC configurator to Jenkins core.

            if added to Jenkins Core then JCasC can't be a plugin anymore.

             

            My initial idea was to refactor PluginManager (and siblings) so they can be used as a standalone library for plugin management/installation, then can be either embedded into another tool, or invoked from command line with the adequate `-cp` option pointing to this lib within jenkins.war/WEB-INF/libs.

            I'm also fine with a Go implementation which would make perfect sense for portability in various scenarios. In both cases, a well defined JEP on plugin management in Jenkins would help, as today we have to reverse-engineer the existing codebase to understand plugin management and update-center mysteries.

             

            Show
            ndeloof Nicolas De Loof added a comment - > Should be possible to add an optional JCasC configurator to Jenkins core. if added to Jenkins Core then JCasC can't be a plugin anymore.   My initial idea was to refactor PluginManager (and siblings) so they can be used as a standalone library for plugin management/installation, then can be either embedded into another tool, or invoked from command line with the adequate `-cp` option pointing to this lib within jenkins.war/WEB-INF/libs. I'm also fine with a Go implementation which would make perfect sense for portability in various scenarios. In both cases, a well defined JEP on plugin management in Jenkins would help, as today we have to reverse-engineer the existing codebase to understand plugin management and update-center mysteries.  
            Hide
            oleg_nenashev Oleg Nenashev added a comment -

            Just an update here, we will have a GSoC project for it this year: https://summerofcode.withgoogle.com/projects/#5741119520899072

            The format is yet to be defined, but it will be handled under the Platform SIG umbrella.

             

             

            Show
            oleg_nenashev Oleg Nenashev added a comment - Just an update here, we will have a GSoC project for it this year:  https://summerofcode.withgoogle.com/projects/#5741119520899072 The format is yet to be defined, but it will be handled under the Platform SIG umbrella.    
            Hide
            nickbrown Nicholas Brown added a comment -

            This might help address the following ansible jenkin plugin management problem: https://github.com/ansible/ansible/issues/24864

            Show
            nickbrown Nicholas Brown added a comment - This might help address the following ansible jenkin plugin management problem: https://github.com/ansible/ansible/issues/24864
            Hide
            fwilhe Florian Wilhelm added a comment -

            Hi,

            I like the idea of this project quite a lot, cool stuff.

            I have one potential use case where I don’t find a ticket matching it.

            For context, I work at SAP and we have a Jenkins image based on upstream with a custom plugins.txt file. Currently we use latest of all plugins. What I would like is to feed that plugins list into the tool and get a now up to date plugins.txt with all dependencies resolved and versions fixed, so we can use that to build a reproducible image. So, instead of a directory where the plugins are installed, my desired output is a “resolved” plugins.txt file. Is this in scope for this project? I think most required code is already there, and thus implementation should not be too much work (looking at PluginManager.java from a birds eye view).

             

            Kind regards

             

            Florian

            Show
            fwilhe Florian Wilhelm added a comment - Hi, I like the idea of this project quite a lot, cool stuff. I have one potential use case where I don’t find a ticket matching it. For context, I work at SAP and we have a Jenkins image based on upstream with a custom plugins.txt file. Currently we use latest of all plugins. What I would like is to feed that plugins list into the tool and get a now up to date plugins.txt with all dependencies resolved and versions fixed, so we can use that to build a reproducible image. So, instead of a directory where the plugins are installed, my desired output is a “resolved” plugins.txt file. Is this in scope for this project? I think most required code is already there, and thus implementation should not be too much work (looking at  PluginManager.java  from a birds eye view).   Kind regards   Florian
            Hide
            jglick Jesse Glick added a comment -

            JENKINS-47498 might be a better input source, as the list of plugins would actually be mechanically vetted, not merely the latest on offer.

            Show
            jglick Jesse Glick added a comment - JENKINS-47498 might be a better input source, as the list of plugins would actually be mechanically vetted, not merely the latest on offer.

              People

              • Assignee:
                stopalopa Natasha Stopa
                Reporter:
                ndeloof Nicolas De Loof
              • Votes:
                7 Vote for this issue
                Watchers:
                15 Start watching this issue

                Dates

                • Created:
                  Updated: