Hi „judaondo“,
1. Ad “but it doesn’t do anything”: in @NonCPS annotated methods you must not call pipeline steps like “checkout” => seemingly this is skipped (?) rather silently 2. However, in addition the warning log “expected to call WorkflowScript.gitCheckoutMultipleRepositories but wound up catching com.mycom.Logger.info; see: https://jenkins.io/redirect/pipeline-cps-method-mismatches/” also sounds very suspicious… 3. I guess the iteration over “repositories” parameter is the original culprit: from Jenkins CPS/pipeline point of view using a non-serializable LinkedHashMap$Entry * See https://jenkins.io/blog/2017/02/01/pipeline-scalability-best-practice#appendix-serializable-vs.-non-serializable-types * => Use a different way to iterate HTH Reinhold From: [email protected] <[email protected]> On Behalf Of judaondo Sent: Dienstag, 18. Februar 2020 08:50 To: Jenkins Users <[email protected]> Subject: Re: shared library - hashmap error Thanks Ram, it fixed that issue, but now I get the following (the status is SUCCESS but it doesn´t do anything): [Pipeline] { (Checkout) [Pipeline] echo 00:00:00.799 /var/lib/jenkins/staticfiles/cip-environmens-local-cloud/ expected to call WorkflowScript.gitCheckoutMultipleRepositories but wound up catching com.mycom.Logger.info; see: https://jenkins.io/redirect/pipeline-cps-method-mismatches/ [Pipeline] echo 00:00:00.852 INFO: Clonning 'htpp://myrepo1.git - (branch1 branch)' repository. [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // ansiColor [Pipeline] } [Pipeline] // timestamps [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS El martes, 18 de febrero de 2020, 4:44:19 (UTC+1), Ramanathan Muthaiah escribió: On Monday, February 17, 2020 at 8:06:57 PM UTC+5:30, judaondo wrote: Hello I have the following Shared Library: #!/usr/bin/env groovy import com.mycom.Logger /** * Clone the selected git repository. * * Example usage within a declarative pipeline: * * steps { * gitCheckout (["htpp://myrepo1.git": "branch1", "htpp://myrepo2.git": "branch2"]) * } * * @param repositories (HashMap) git url and branch of the git project to be downloaded. */ def call(repositories = ["htpp://myrepo1.git": "branch1", "htpp://myrepo2.git": "branch2"]) { def logger = new Logger() for (repo in repositories) { def repository = repo.key def branch = repo.value def foldername = repository.tokenize('/')[-1].toLowerCase() logger.info<http://logger.info/>("Clonning '${repository} - (${branch} branch)' repository.") println("Foldername: " + foldername) println("Repository: " + repository) println("Branch: " + branch) checkout([$class: 'GitSCM', branches: [[name: branch]], doGenerateSubmoduleConfigurations: false, extensions: [ [$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true], [$class: 'RelativeTargetDirectory', relativeTargetDir: foldername] ], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gittfscredentials', url: repository]]]) } // endfor } When using it in Jenkins pipeline #!/usr/bin/env groovy @Library('mylib') import com.mycom.* pipeline { agent { label 'master' } options { timestamps () disableConcurrentBuilds() } stages { stage('Checkout') { steps { gitCheckoutMultipleRepositories() } } } } I get the following error: ............ 00:00:00.963 INFO: Clonning 'htpp://myrepo1.git - (branch1 branch)' repository. [Pipeline] echo 00:00:00.972 Foldername: myrepo1.git [Pipeline] echo 00:00:00.980 Repository: htpp://myrepo1.git [Pipeline] echo 00:00:00.987 Branch: branch1 [Pipeline] checkout 00:00:00.998 using credential gittfscredentials 00:00:01.002 > git rev-parse --is-inside-work-tree # timeout=10 00:00:01.010 Fetching changes from the remote Git repository 00:00:01.010 > git config remote.origin.url htpp://myrepo1.git # timeout=10 00:00:01.018 Using shallow fetch with depth 1 00:00:01.018 Fetching upstream changes from htpp://myrepo1.git 00:00:01.018 > git --version # timeout=10 [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // ansiColor [Pipeline] } [Pipeline] // timestamps [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline an exception which occurred: in field com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals in object com.cloudbees.groovy.cps.impl.LoopBlockScopeEnv@469abe44<mailto:com.cloudbees.groovy.cps.impl.LoopBlockScopeEnv@469abe44> in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@71325a45<mailto:com.cloudbees.groovy.cps.impl.BlockScopeEnv@71325a45> in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@4955b455<mailto:com.cloudbees.groovy.cps.impl.BlockScopeEnv@4955b455> in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@451fb812<mailto:com.cloudbees.groovy.cps.impl.FunctionCallEnv@451fb812> in field com.cloudbees.groovy.cps.Continuable.e in object org.jenkinsci.plugins.workflow.cps.SandboxContinuable@747dbee2<mailto:org.jenkinsci.plugins.workflow.cps.SandboxContinuable@747dbee2> in field org.jenkinsci.plugins.workflow.cps.CpsThread.program in object org.jenkinsci.plugins.workflow.cps.CpsThread@4b1cbc4d<mailto:org.jenkinsci.plugins.workflow.cps.CpsThread@4b1cbc4d> in field org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.threads in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@4312dc7f<mailto:org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@4312dc7f> in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@4312dc7f<mailto:org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@4312dc7f> Caused: java.io.NotSerializableException: java.util.LinkedHashMap$Entry at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:926) at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65) at org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56) at org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50) at org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344) at java.util.HashMap.internalWriteEntries(HashMap.java:1793) at java.util.HashMap.writeObject(HashMap.java:1363) at sun.reflect.GeneratedMethodAccessor1288.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.jboss.marshalling.reflect.JDKSpecific$SerMethods.callWriteObject(JDKSpecific.java:156) at org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:191) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1028) at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019) at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019) at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019) at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019) at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019) at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040) at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65) at org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56) at org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50) at org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344) at java.util.concurrent.ConcurrentSkipListMap.writeObject(ConcurrentSkipListMap.java:1437) at sun.reflect.GeneratedMethodAccessor1304.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.jboss.marshalling.reflect.JDKSpecific$SerMethods.callWriteObject(JDKSpecific.java:156) at org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:191) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1028) at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040) at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58) at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111) at org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.lambda$writeObject$0(RiverWriter.java:144) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:237) at org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.writeObject(RiverWriter.java:143) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:557) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:534) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgramIfPossible(CpsThreadGroup.java:521) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:445) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$400(CpsThreadGroup.java:96) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:317) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:281) at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:67) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131) at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Finished: FAILURE I don´t guess what could be bad. Any help please? In your library, annotate the function with @NonCPS, like this: @NonCPS def call() { . . . } Why to annotate? Checkout the explanation here: https://stackoverflow.com/questions/31654497/how-to-fix-notserializableexception-error-during-jenkins-workflow-build https://stackoverflow.com/questions/40159258/impossibility-to-iterate-over-a-map-using-groovy-within-jenkins-pipeline/40166064#40166064 /Ram -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]<mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/fe386c57-b395-4830-b108-35855ec204be%40googlegroups.com<https://groups.google.com/d/msgid/jenkinsci-users/fe386c57-b395-4830-b108-35855ec204be%40googlegroups.com?utm_medium=email&utm_source=footer>. -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/AM0PR01MB614768B533CBF125A1DF9676F7110%40AM0PR01MB6147.eurprd01.prod.exchangelabs.com.
