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

Allow plugins to declare that they do not use certain implied dependencies

    Details

    • Similar Issues:
    • Epic Link:

      Description

      Filed against core, as there is no component for the maven-hpi-plugin.

      When a plugin has an older core dependency, Jenkins currently adds all plugins detached from core to the plugins' class path, as they may be used by the plugin.

      This can easily lead to circular dependencies, and core has a solution for that in ClassicPluginStrategy (BREAK_CYCLES).

      However, it would be great if plugins could declare that they do not have certain implied dependencies in their own metadata. This has several advantages:

      • Doesn't require core modifications to break dependency cycles
      • Plugins can explicitly not depend on detached plugins, thereby making careful Jenkins administration easier and more stricter dependency handling (refuse to load plugins that don't have all dependencies) viable.

        Attachments

          Issue Links

            Activity

            danielbeck Daniel Beck created issue -
            jglick Jesse Glick made changes -
            Field Original Value New Value
            Link This issue is blocking JENKINS-21486 [ JENKINS-21486 ]
            jglick Jesse Glick made changes -
            Link This issue is blocking JENKINS-25785 [ JENKINS-25785 ]
            jglick Jesse Glick made changes -
            Link This issue is blocking JENKINS-33095 [ JENKINS-33095 ]
            rtyler R. Tyler Croy made changes -
            Workflow JNJira [ 163806 ] JNJira + In-Review [ 181383 ]
            jglick Jesse Glick made changes -
            Link This issue relates to JENKINS-30685 [ JENKINS-30685 ]
            Hide
            jglick Jesse Glick added a comment -

            Proposal: manifest header / HPI plugin configuration which lets you say that, for example, while your core baseline is 1.625.3, you wish to use the detached list as of 2.60.1 (i.e., you declare that you are not using anything split between those versions). You can easily verify compliance with such a Jenkinsfile like

            buildPlugin(jenkinsVersions: [null, '2.60.1'])

            (Needs to be tested that this will indeed fail in the expected way if the plugin was in fact relying on one of the plugins split between those versions. Certainly compile-time dependencies will fail.)

            Show
            jglick Jesse Glick added a comment - Proposal: manifest header / HPI plugin configuration which lets you say that, for example, while your core baseline is 1.625.3, you wish to use the detached list as of 2.60.1 (i.e., you declare that you are not using anything split between those versions). You can easily verify compliance with such a Jenkinsfile like buildPlugin(jenkinsVersions: [ null , '2.60.1' ]) (Needs to be tested that this will indeed fail in the expected way if the plugin was in fact relying on one of the plugins split between those versions. Certainly compile-time dependencies will fail.)
            jglick Jesse Glick made changes -
            Labels api split-plugins-from-core
            jglick Jesse Glick made changes -
            Link This issue relates to JENKINS-47634 [ JENKINS-47634 ]
            jglick Jesse Glick made changes -
            Link This issue is blocking JENKINS-49555 [ JENKINS-49555 ]
            jglick Jesse Glick made changes -
            Summary Allow plugins to declare that they not use certain implied dependencies Allow plugins to declare that they do not use certain implied dependencies
            jglick Jesse Glick made changes -
            Link This issue relates to JENKINS-49651 [ JENKINS-49651 ]
            jglick Jesse Glick made changes -
            Link This issue relates to JENKINS-50249 [ JENKINS-50249 ]
            batmat Baptiste Mathus made changes -
            Assignee Baptiste Mathus [ batmat ]
            batmat Baptiste Mathus made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            batmat Baptiste Mathus made changes -
            Remote Link This issue links to "maven-hpi-plugin PR (Web Link)" [ 22313 ]
            oleg_nenashev Oleg Nenashev made changes -
            Epic Link JENKINS-51805 [ 191255 ]
            jglick Jesse Glick made changes -
            Link This issue relates to JENKINS-55681 [ JENKINS-55681 ]
            batmat Baptiste Mathus made changes -
            Epic Link JENKINS-51805 [ 191255 ] JENKINS-52284 [ 192059 ]
            Hide
            jglick Jesse Glick added a comment -

            Baptiste Mathus are you actually working on this?

            My proposal of 2017-07-07 would probably be more practical for plugins using

            buildPlugin(configurations: buildPlugin.recommendedConfigurations())
            
            Show
            jglick Jesse Glick added a comment - Baptiste Mathus are you actually working on this? My proposal of 2017-07-07 would probably be more practical for plugins using buildPlugin(configurations: buildPlugin.recommendedConfigurations())
            jglick Jesse Glick made changes -
            Status In Progress [ 3 ] Open [ 1 ]
            jglick Jesse Glick made changes -
            Assignee Baptiste Mathus [ batmat ]
            Hide
            jglick Jesse Glick added a comment -

            form-element-path #8 is an example of where this would be helpful.

            Show
            jglick Jesse Glick added a comment - form-element-path #8 is an example of where this would be helpful.
            jglick Jesse Glick made changes -
            Remote Link This issue links to "form-element-path 8 (Web Link)" [ 23069 ]

              People

              • Assignee:
                Unassigned
                Reporter:
                danielbeck Daniel Beck
              • Votes:
                1 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated: