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

Dependency versions should NOT change for a given plugin release

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Critical Critical
    • None

      Problem Statement

      It appears that pinned versions of the blue ocean plugin will have dependencies change unexpectedly.  Here is some output from the init container for our helm release:

      io.jenkins.tools.pluginmanager.impl.AggregatePluginPrerequisitesNotMetException: Multiple plugin prerequisites not met:
      Plugin blueocean:1.25.8 (via blueocean-git-pipeline:1.27.1) depends on git:5.0.0, but there is an older version defined on the top level - git:4.14.1,
      Plugin blueocean:1.25.8 (via blueocean-pipeline-api-impl:1.27.1) depends on git:5.0.0, but there is an older version defined on the top level - git:4.14.1
              at io.jenkins.tools.pluginmanager.impl.PluginManager.start(PluginManager.java:240)
              at io.jenkins.tools.pluginmanager.impl.PluginManager.start(PluginManager.java:189)
              at io.jenkins.tools.pluginmanager.cli.Main.main(Main.java:52)
              Suppressed: io.jenkins.tools.pluginmanager.impl.PluginDependencyException: Plugin blueocean:1.25.8 (via blueocean-git-pipeline:1.27.1) depends on git:5.0.0, but there is an older version defined on the top level - git:4.14.1
                      at io.jenkins.tools.pluginmanager.impl.PluginManager.resolveRecursiveDependencies(PluginManager.java:1125)
                      at io.jenkins.tools.pluginmanager.impl.PluginManager.findPluginsAndDependencies(PluginManager.java:692)
                      at io.jenkins.tools.pluginmanager.impl.PluginManager.start(PluginManager.java:232)
                      ... 2 more
              Suppressed: io.jenkins.tools.pluginmanager.impl.PluginDependencyException: Plugin blueocean:1.25.8 (via blueocean-pipeline-api-impl:1.27.1) depends on git:5.0.0, but there is an older version defined on the top level - git:4.14.1
                      at io.jenkins.tools.pluginmanager.impl.PluginManager.resolveRecursiveDependencies(PluginManager.java:1125)
                      at io.jenkins.tools.pluginmanager.impl.PluginManager.findPluginsAndDependencies(PluginManager.java:692)
                      at io.jenkins.tools.pluginmanager.impl.PluginManager.start(PluginManager.java:232)
                      ... 2 more
      Multiple plugin prerequisites not met:
      Plugin blueocean:1.25.8 (via blueocean-git-pipeline:1.27.1) depends on git:5.0.0, but there is an older version defined on the top level - git:4.14.1,
      Plugin blueocean:1.25.8 (via blueocean-pipeline-api-impl:1.27.1) depends on git:5.0.0, but there is an older version defined on the top level - git:4.14.1 

      Supporting information

      Here are the pinned versions that we have in our helm release (with everything working as of Dec 15th and validated during a node upgrade on Jan 4th):

        additionalPlugins:
        - blueocean:1.25.8
        - pipeline-utility-steps:2.14.0
        - bitbucket:223.vd12f2bca5430
        - azure-ad:267.v5b_dfb_514d9fd
        - credentials-binding:523.vd859a_4b_122e6
        - sonar:2.15
        - ansicolor:1.0.2
        - pipeline-stage-view:2.28
        - datadog:5.2.0 

      Other possibly important information:

        # we're using a different version of jenkins than the chart:
        tag: 2.381-jdk17 

      IIRC this is not the first time that this has happened to my team.  Last year we had a similar issue when git:4.14.1 was released.

      Why this is so important

      As SREs, my team wants to ensure that our entire system is stable to help maximize uptime, built trust between teams and customers, and empower developers to write, build, test, and deploy code faster. 

      The stability of our CI and CD systems is critical to achieving that goal, and thus we must ensure that upstream dependencies don't change in what should be stable artifacts, especially when those artifacts directly affect the uptime of the system during normal scaling operations.

          [JENKINS-70579] Dependency versions should NOT change for a given plugin release

          Mark Waite added a comment -

          I believe that you are misunderstanding the output from the plugin installation manager tool or are passing the wrong arguments to the plugin installation manager tool.

          The plugin installation manager tool assumes by default that the most recent release of a dependent plugin is preferred. It sees that the blue ocean plugin depends on the git plugin, sees that the most recent version of the git plugin is 5.0.0, and assumes that you want the most recent release of the git plugin to satisfy the git plugin dependency of the blue ocean plugin. However, it also sees that you have declared in the list of plugins that you want git plugin 4.14.1. It complains that it cannot resolve the conflict between the explicit request for git plugin 4.14.1 and the dependency based request for 5.0.0.

          The plugin installation manager tool has a command line option --latest false that changes the behavior to not select the most recent version of plugin dependencies. You'll need to find a way to set that option in the definition of the helm chart.

          Mark Waite added a comment - I believe that you are misunderstanding the output from the plugin installation manager tool or are passing the wrong arguments to the plugin installation manager tool. The plugin installation manager tool assumes by default that the most recent release of a dependent plugin is preferred. It sees that the blue ocean plugin depends on the git plugin, sees that the most recent version of the git plugin is 5.0.0, and assumes that you want the most recent release of the git plugin to satisfy the git plugin dependency of the blue ocean plugin. However, it also sees that you have declared in the list of plugins that you want git plugin 4.14.1. It complains that it cannot resolve the conflict between the explicit request for git plugin 4.14.1 and the dependency based request for 5.0.0. The plugin installation manager tool has a command line option --latest false that changes the behavior to not select the most recent version of plugin dependencies. You'll need to find a way to set that option in the definition of the helm chart.

            Unassigned Unassigned
            unacceptable Robert Jackson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: