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

Delivery Pipeline View broken because of NoSuchMethodError on PromotionStatusWrapper.getIcon(String)

      We're using the delivery-pipeline-plugin to visualize our job chains aka build pipelines.

      As soon as the "Initial Job" job of the Delivery Pipeline View has a successful promotion, the view is broken with "Error communicating to server!" and cannot be used anymore.

      In the Jenkins log we see the following: 

      java.lang.NoSuchMethodError: 'java.lang.String hudson.plugins.promoted_builds.Status.getIcon(java.lang.String)'
              at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider$PromotionStatusWrapper.getIcon(PromotionStatusProvider.java:129)
              at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider.buildNewPromotionStatus(PromotionStatusProvider.java:82)
              at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider.getPromotionStatusList(PromotionStatusProvider.java:65)
              at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.getPromotionStatusList(SimpleStatus.java:235)
              at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.getStatusFromResult(SimpleStatus.java:200)
              at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.resolveStatus(SimpleStatus.java:170)
              at se.diabol.jenkins.pipeline.domain.task.Task.getLatestTask(Task.java:195)
              at se.diabol.jenkins.pipeline.domain.Stage.createLatestStage(Stage.java:219)
              at se.diabol.jenkins.pipeline.domain.Pipeline.getPipelines(Pipeline.java:352)
              at se.diabol.jenkins.pipeline.domain.Pipeline.createPipelineLatest(Pipeline.java:322)
              at se.diabol.jenkins.pipeline.DeliveryPipelineView.getComponent(DeliveryPipelineView.java:587)
              at se.diabol.jenkins.pipeline.DeliveryPipelineView.getPipelines(DeliveryPipelineView.java:538)
              at org.kohsuke.stapler.export.MethodProperty.getValue(MethodProperty.java:76)
       

      This is related to the fix for JENKINS-68320, which changed the "getIcons(String size)" method to "getIcon()" only (without the "size" parameter).

      Either the delivery-pipeline plugin must be adapted to the changes in the promoted-builds plugin

      or the old "getIcon(String size)" method in the promoted-builds plugin must be kept for backwards compatibility reasons.

          [JENKINS-72527] Delivery Pipeline View broken because of NoSuchMethodError on PromotionStatusWrapper.getIcon(String)

          René Zanner created issue -
          René Zanner made changes -
          Description Original: We're using the delivery-pipeline-plugin to visualize our job chains aka build pipelines.

          As soon as there's one job having a successful promotion, the view is broken with "Error communicating to server!".

          In the Jenkins log we see the following: 
          {code:java}
          java.lang.NoSuchMethodError: 'java.lang.String hudson.plugins.promoted_builds.Status.getIcon(java.lang.String)'
                  at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider$PromotionStatusWrapper.getIcon(PromotionStatusProvider.java:129)
                  at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider.buildNewPromotionStatus(PromotionStatusProvider.java:82)
                  at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider.getPromotionStatusList(PromotionStatusProvider.java:65)
                  at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.getPromotionStatusList(SimpleStatus.java:235)
                  at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.getStatusFromResult(SimpleStatus.java:200)
                  at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.resolveStatus(SimpleStatus.java:170)
                  at se.diabol.jenkins.pipeline.domain.task.Task.getLatestTask(Task.java:195)
                  at se.diabol.jenkins.pipeline.domain.Stage.createLatestStage(Stage.java:219)
                  at se.diabol.jenkins.pipeline.domain.Pipeline.getPipelines(Pipeline.java:352)
                  at se.diabol.jenkins.pipeline.domain.Pipeline.createPipelineLatest(Pipeline.java:322)
                  at se.diabol.jenkins.pipeline.DeliveryPipelineView.getComponent(DeliveryPipelineView.java:587)
                  at se.diabol.jenkins.pipeline.DeliveryPipelineView.getPipelines(DeliveryPipelineView.java:538)
                  at org.kohsuke.stapler.export.MethodProperty.getValue(MethodProperty.java:76)
           {code}
          New: We're using the delivery-pipeline-plugin to visualize our job chains aka build pipelines.

          As soon as the "Initial Job" job of the Delivery Pipeline View has a successful promotion, the view is broken with "Error communicating to server!" and cannot be used anymore.

          In the Jenkins log we see the following: 
          {code:java}
          java.lang.NoSuchMethodError: 'java.lang.String hudson.plugins.promoted_builds.Status.getIcon(java.lang.String)'
                  at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider$PromotionStatusWrapper.getIcon(PromotionStatusProvider.java:129)
                  at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider.buildNewPromotionStatus(PromotionStatusProvider.java:82)
                  at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider.getPromotionStatusList(PromotionStatusProvider.java:65)
                  at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.getPromotionStatusList(SimpleStatus.java:235)
                  at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.getStatusFromResult(SimpleStatus.java:200)
                  at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.resolveStatus(SimpleStatus.java:170)
                  at se.diabol.jenkins.pipeline.domain.task.Task.getLatestTask(Task.java:195)
                  at se.diabol.jenkins.pipeline.domain.Stage.createLatestStage(Stage.java:219)
                  at se.diabol.jenkins.pipeline.domain.Pipeline.getPipelines(Pipeline.java:352)
                  at se.diabol.jenkins.pipeline.domain.Pipeline.createPipelineLatest(Pipeline.java:322)
                  at se.diabol.jenkins.pipeline.DeliveryPipelineView.getComponent(DeliveryPipelineView.java:587)
                  at se.diabol.jenkins.pipeline.DeliveryPipelineView.getPipelines(DeliveryPipelineView.java:538)
                  at org.kohsuke.stapler.export.MethodProperty.getValue(MethodProperty.java:76)
           {code}
          René Zanner made changes -
          Summary Original: Delivery Pipeline view broken because of NoSuchMethodError on PromotionStatusWrapper.getIcon New: Delivery Pipeline View broken because of NoSuchMethodError on PromotionStatusWrapper.getIcon
          René Zanner made changes -
          Summary Original: Delivery Pipeline View broken because of NoSuchMethodError on PromotionStatusWrapper.getIcon New: Delivery Pipeline View broken because of NoSuchMethodError on PromotionStatusWrapper.getIcon(String)
          René Zanner made changes -
          Description Original: We're using the delivery-pipeline-plugin to visualize our job chains aka build pipelines.

          As soon as the "Initial Job" job of the Delivery Pipeline View has a successful promotion, the view is broken with "Error communicating to server!" and cannot be used anymore.

          In the Jenkins log we see the following: 
          {code:java}
          java.lang.NoSuchMethodError: 'java.lang.String hudson.plugins.promoted_builds.Status.getIcon(java.lang.String)'
                  at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider$PromotionStatusWrapper.getIcon(PromotionStatusProvider.java:129)
                  at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider.buildNewPromotionStatus(PromotionStatusProvider.java:82)
                  at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider.getPromotionStatusList(PromotionStatusProvider.java:65)
                  at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.getPromotionStatusList(SimpleStatus.java:235)
                  at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.getStatusFromResult(SimpleStatus.java:200)
                  at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.resolveStatus(SimpleStatus.java:170)
                  at se.diabol.jenkins.pipeline.domain.task.Task.getLatestTask(Task.java:195)
                  at se.diabol.jenkins.pipeline.domain.Stage.createLatestStage(Stage.java:219)
                  at se.diabol.jenkins.pipeline.domain.Pipeline.getPipelines(Pipeline.java:352)
                  at se.diabol.jenkins.pipeline.domain.Pipeline.createPipelineLatest(Pipeline.java:322)
                  at se.diabol.jenkins.pipeline.DeliveryPipelineView.getComponent(DeliveryPipelineView.java:587)
                  at se.diabol.jenkins.pipeline.DeliveryPipelineView.getPipelines(DeliveryPipelineView.java:538)
                  at org.kohsuke.stapler.export.MethodProperty.getValue(MethodProperty.java:76)
           {code}
          New: We're using the delivery-pipeline-plugin to visualize our job chains aka build pipelines.

          As soon as the "Initial Job" job of the Delivery Pipeline View has a successful promotion, the view is broken with "Error communicating to server!" and cannot be used anymore.

          In the Jenkins log we see the following: 
          {code:java}
          java.lang.NoSuchMethodError: 'java.lang.String hudson.plugins.promoted_builds.Status.getIcon(java.lang.String)'
                  at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider$PromotionStatusWrapper.getIcon(PromotionStatusProvider.java:129)
                  at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider.buildNewPromotionStatus(PromotionStatusProvider.java:82)
                  at se.diabol.jenkins.pipeline.domain.status.promotion.PromotionStatusProvider.getPromotionStatusList(PromotionStatusProvider.java:65)
                  at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.getPromotionStatusList(SimpleStatus.java:235)
                  at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.getStatusFromResult(SimpleStatus.java:200)
                  at se.diabol.jenkins.pipeline.domain.status.SimpleStatus.resolveStatus(SimpleStatus.java:170)
                  at se.diabol.jenkins.pipeline.domain.task.Task.getLatestTask(Task.java:195)
                  at se.diabol.jenkins.pipeline.domain.Stage.createLatestStage(Stage.java:219)
                  at se.diabol.jenkins.pipeline.domain.Pipeline.getPipelines(Pipeline.java:352)
                  at se.diabol.jenkins.pipeline.domain.Pipeline.createPipelineLatest(Pipeline.java:322)
                  at se.diabol.jenkins.pipeline.DeliveryPipelineView.getComponent(DeliveryPipelineView.java:587)
                  at se.diabol.jenkins.pipeline.DeliveryPipelineView.getPipelines(DeliveryPipelineView.java:538)
                  at org.kohsuke.stapler.export.MethodProperty.getValue(MethodProperty.java:76)
           {code}
          This is related to the fix for JENKINS-68320, which changed the "getIcons(String size)" method to "getIcon()" only (without the "size" parameter).

          Either the delivery-pipeline plugin must be adapted to the changes in the promoted-builds plugin

          or the old "getIcon(String size)" method in the promoted-builds plugin must be kept for backwards compatibility reasons.
          René Zanner made changes -
          Environment New: Jenkins 2.414.1
          promoted builds plugin 945.v597f5c6a_d3fd
          René Zanner made changes -
          Environment Original: Jenkins 2.414.1
          promoted builds plugin 945.v597f5c6a_d3fd
          New: Jenkins 2.414.1
          Delivery Pipeline Plugin 1.4.2
          promoted builds plugin 945.v597f5c6a_d3fd

          Mark Waite added a comment - - edited

          Thanks for the report. Based on the 68% health score of the delivery Pipeline plugin, the absence of a link to the source code of the plugin on the plugins site, and the ancient dependencies that are bundled inside the delivery pipeline plugin (Guava 18, httpclient 4.4.6, and more), and the general non-responses from maintainers of the plugin, I think that the delivery pipeline plugin should be considered unmaintained.

          The repository permissions data does not include a link to source code either.

          Adding that API entry point back into the promoted builds plugin is possible, but the Jenkins icons have evolved so that the API no longer makes sense. You're probably best to switch away from the unmaintained delivery pipeline plugin to some other visualization like Pipeline graph view.

          https://github.com/Diabol/delivery-pipeline-plugin appears that it might be the plugin source code. If you would like to modernize the plugin, adopt it, and propose that it be hosted in the jenkinsci organization, I'm sure there are people that are willing to answer questions.

          Mark Waite added a comment - - edited Thanks for the report. Based on the 68% health score of the delivery Pipeline plugin, the absence of a link to the source code of the plugin on the plugins site , and the ancient dependencies that are bundled inside the delivery pipeline plugin (Guava 18, httpclient 4.4.6, and more), and the general non-responses from maintainers of the plugin, I think that the delivery pipeline plugin should be considered unmaintained. The repository permissions data does not include a link to source code either. Adding that API entry point back into the promoted builds plugin is possible, but the Jenkins icons have evolved so that the API no longer makes sense. You're probably best to switch away from the unmaintained delivery pipeline plugin to some other visualization like Pipeline graph view. https://github.com/Diabol/delivery-pipeline-plugin appears that it might be the plugin source code. If you would like to modernize the plugin , adopt it , and propose that it be hosted in the jenkinsci organization, I'm sure there are people that are willing to answer questions.

          René Zanner added a comment -

          Thanks for the quick response. I think I'm taking the time to fix the delivery-pipeline-plugin and go the "modernize, adopt and host in jenkinsci organization" way you proposed.

          René Zanner added a comment - Thanks for the quick response. I think I'm taking the time to fix the delivery-pipeline-plugin and go the "modernize, adopt and host in jenkinsci organization" way you proposed.

          Luis added a comment -

          Same problem here, please let me know if there's something I can help with rzanner 

          Luis added a comment - Same problem here, please let me know if there's something I can help with rzanner  

            gsoffredini Gianluca
            rzanner René Zanner
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated: