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

readYaml with Pipeline-Utility-Steps not working properly

      Hello everyone,

      Im using for my jenkins a sharedLibrary where im manipulating yaml for executing my functions.

      Recently i updated Pipeline-Utility-Step plugin from 2.15 to 2.16 and all dependences.

      Based on documentation dependences are :

      In my sistem i have :

      The problem : Inside my code i have the following syntax which works properly before plugin update  :

          contextMap.putAll(readYaml(text:yaml) as Map)
          // create the unstash map

      even if i use readYaml() different is not working anymore.

      LOG:
      Also: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: f2565cba-9017-4be4-9c47-cbae78b8db65
      java.lang.NoClassDefFoundError: Could not initialize class org.jenkinsci.plugins.pipeline.utility.steps.conf.ReadYamlStep
      at jdk.internal.reflect.GeneratedConstructorAccessor577.newInstance(Unknown Source)
      at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
      at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:330)
      at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:272)
      at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:204)
      at org.jenkinsci.plugins.pipeline.utility.steps.AbstractFileOrTextStepDescriptorImpl.newInstance(AbstractFileOrTextStepDescriptorImpl.java:24)
      at org.jenkinsci.plugins.pipeline.utility.steps.AbstractFileOrTextStepDescriptorImpl.newInstance(AbstractFileOrTextStepDescriptorImpl.java:12)
      at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:302)
      at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:196)
      at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:124)
      at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:47)
      at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
      at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:20)
      at org.jenkinsci.plugins.workflow.cps.LoggingInvoker.methodCall(LoggingInvoker.java:105)
      at mqPipelineConfigInit.call(mqPipelineConfigInit.groovy:56)
      at WorkflowScript.run(WorkflowScript:30)
      at __cps.transform__(Native Method)
      at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:90)
      at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:116)
      at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:85)
      at jdk.internal.reflect.GeneratedMethodAccessor299.invoke(Unknown Source)
      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
      at com.cloudbees.groovy.cps.impl.CollectionLiteralBlock$ContinuationImpl.dispatch(CollectionLiteralBlock.java:55)
      at com.cloudbees.groovy.cps.impl.CollectionLiteralBlock$ContinuationImpl.item(CollectionLiteralBlock.java:45)
      at jdk.internal.reflect.GeneratedMethodAccessor268.invoke(Unknown Source)
      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
      at com.cloudbees.groovy.cps.impl.LocalVariableBlock$LocalVariable.get(LocalVariableBlock.java:39)
      at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
      at com.cloudbees.groovy.cps.impl.LocalVariableBlock.evalLValue(LocalVariableBlock.java:28)
      at com.cloudbees.groovy.cps.LValueBlock$BlockImpl.eval(LValueBlock.java:55)
      at com.cloudbees.groovy.cps.LValueBlock.eval(LValueBlock.java:16)
      at com.cloudbees.groovy.cps.Next.step(Next.java:83)
      at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:152)
      at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:146)
      at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:136)
      at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:275)
      at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:146)
      at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18)
      at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:51)
      at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:187)
      at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:422)
      at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:330)
      at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:294)
      at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:97)
      at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:139)
      at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
      at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
      at jenkins.util.ErrorLoggingExecutorService.lambda$wrap$0(ErrorLoggingExecutorService.java:51)
      at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
      at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      at java.base/java.lang.Thread.run(Thread.java:829)
      Finished: FAILURE
       

      My server is inside a company and i do not have links

          [JENKINS-72318] readYaml with Pipeline-Utility-Steps not working properly

          Mihai created issue -

          Mark Waite added a comment -

          Please provide the list of installed plugins in a format that others can use to attempt to duplicate the issue. "How to report an issue" has a groovy script that can be run in the Jenkins groovy script console that is available from "Manage Jenkins".

          Please provide a sample YAML file that is failing to load

          Please provide a sample Pipeline script that uses the sample YAML file.

          Mark Waite added a comment - Please provide the list of installed plugins in a format that others can use to attempt to duplicate the issue. "How to report an issue" has a groovy script that can be run in the Jenkins groovy script console that is available from "Manage Jenkins". Please provide a sample YAML file that is failing to load Please provide a sample Pipeline script that uses the sample YAML file.
          Mihai made changes -
          Attachment New: plugin_list.txt [ 61475 ]
          Mihai made changes -
          Attachment New: code_sl_init.txt [ 61476 ]

          Mihai added a comment - - edited

          Sure, plugin_list.txt

          My YAML

          schema: 1
          project:
            name: UXXXXXX:DEVELOPMENT
            product: UXXXXXX
            emailPath: \\server\Y\JAM\ClientRemoteConnection\ClientRemoteConnection.exe
            emailRecipients:
              - xxx.xxx@marquardt.com
              - xxx.yyy@marquardt.com
              - yyy.zzz@marquardt.com
            emailRecipientsFailed:
              - xxx.xxx@marquardt.com
              - xxx.yyy@marquardt.com
              - yyy.zzz@marquardt.com
          makeCompile:
            type: batch
            directory: Impl\Bld
            command: b.bat
            logFile: Bin/compile.log
          polyspace: 
            webParentPrj: UXXXXXX_PND3
            importComments: false
            testList: 
              - projectName:UXXXXXX_PND3_Nightly
                projectDir: SW_Unit_Test/Polyspace/Configuration
                reportFormat: pdf
                reportTemplateList: 
                  - BugFinder
                legacySrcAbsPath: Impl/Src

          Yaml Call inside Jenkinsfile

           

              stages{
                  stage('Init') {
                  when { expression

          { params.INIT }

          }
                      steps {
                          script

          {                     config = mqPipelineConfigInit(file:'ThirdParty/Jenkins/pipeline_PnD3.yaml')                 }

                      }
                  }
              }

           

          MqPipelineConfigInit contain readYaml() as i mentioned in ticket description :   contextMap.putAll(readYaml(text:yaml) as Map)

          more exactly : readYaml(text:yaml)

           

          I attached all code also. Please check line 51 :code_sl_init.txt

          Mihai added a comment - - edited Sure, plugin_list.txt My YAML schema: 1 project:   name: UXXXXXX:DEVELOPMENT   product: UXXXXXX   emailPath: \\server\Y\JAM\ClientRemoteConnection\ClientRemoteConnection.exe   emailRecipients:     - xxx.xxx@marquardt.com     - xxx.yyy@marquardt.com     - yyy.zzz@marquardt.com   emailRecipientsFailed:     - xxx.xxx@marquardt.com     - xxx.yyy@marquardt.com     - yyy.zzz@marquardt.com makeCompile:   type: batch   directory: Impl\Bld   command: b.bat   logFile: Bin/compile.log polyspace:    webParentPrj: UXXXXXX_PND3   importComments: false   testList:      - projectName:UXXXXXX_PND3_Nightly       projectDir: SW_Unit_Test/Polyspace/Configuration       reportFormat: pdf       reportTemplateList:          - BugFinder       legacySrcAbsPath: Impl/Src Yaml Call inside Jenkinsfile       stages{         stage('Init') {         when { expression { params.INIT } }             steps {                 script {                     config = mqPipelineConfigInit(file:'ThirdParty/Jenkins/pipeline_PnD3.yaml')                 }             }         }     }   MqPipelineConfigInit contain readYaml() as i mentioned in ticket description :   contextMap.putAll( readYaml (text:yaml) as Map) more exactly : readYaml (text:yaml)   I attached all code also. Please check line 51 : code_sl_init.txt

          rsandell added a comment -

          So the actual error is

          > java.lang.NoClassDefFoundError: Could not initialize class org.jenkinsci.plugins.pipeline.utility.steps.conf.ReadYamlStep

           

          The question then is why does that happen. Can you find anything in the system log that indicates an issue with the class? Or any warnings about classloading etc.

          rsandell added a comment - So the actual error is > java.lang.NoClassDefFoundError: Could not initialize class org.jenkinsci.plugins.pipeline.utility.steps.conf.ReadYamlStep   The question then is why does that happen. Can you find anything in the system log that indicates an issue with the class? Or any warnings about classloading etc.
          Mihai made changes -
          Attachment New: image-2024-02-08-10-44-52-688.png [ 62057 ]
          Mihai made changes -
          Attachment New: image-2024-02-08-10-47-40-748.png [ 62058 ]

          Mihai added a comment -

          I updated the Jenkins server to 2.426.3 and Pipeline-Utility-Step to last version 1.16.1. Dependencies are exactly like in documentation from the official page :https://plugins.jenkins.io/pipeline-utility-steps

          Now seems to be a different output when I'm performing readYaml(text:yaml).

          We never manage plugins dependencies manually inside our system.

          I will attach the last plugin list .

          Inside SnakeYaml documentation is something which i can't understand :

          Here i can observe these 2 dependencies blocks . This should be done manually inside pom files ? If yes, which pom? I tried to perform a grep to see where i can find "snakeyaml" string inside my "Jenkins/plugins" and i found  just in  : Maven, SnakeYaml-Api, Pipeline-Utility-Step and an exclusion inside  Jakson2-api.

           

           

          New error message

          Mihai added a comment - I updated the Jenkins server to 2.426.3 and Pipeline-Utility-Step to last version 1.16.1. Dependencies are exactly like in documentation from the official page : https://plugins.jenkins.io/pipeline-utility-steps Now seems to be a different output when I'm performing readYaml(text:yaml). We never manage plugins dependencies manually inside our system. I will attach the last plugin list . Inside SnakeYaml documentation is something which i can't understand : Here i can observe these 2 dependencies blocks . This should be done manually inside pom files ? If yes, which pom? I tried to perform a grep to see where i can find "snakeyaml" string inside my "Jenkins/plugins" and i found  just in  : Maven, SnakeYaml-Api, Pipeline-Utility-Step and an exclusion inside  Jakson2-api.     New error message

          rsandell added a comment -

          OK, so Pipeline Utility Steps plugin is compiled against SnakeYaml Plugin 1.33 and you have installed 2.2 of SnakeYaml. So most likely LoaderOptions.getCodePointLimit was (re)moved in 2.x of SnakeYaml. So to temporarily fix it while Pipeline Utilities is fixed you could try to back down SnakeYaml Api plugin to v. 1.33.

          rsandell added a comment - OK, so Pipeline Utility Steps plugin is compiled against SnakeYaml Plugin 1.33 and you have installed 2.2 of SnakeYaml. So most likely LoaderOptions.getCodePointLimit was (re)moved in 2.x of SnakeYaml. So to temporarily fix it while Pipeline Utilities is fixed you could try to back down SnakeYaml Api plugin to v. 1.33.

            rsandell rsandell
            mihai_toma Mihai
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: