#jenkins #curl
#дженкинс #curl
Вопрос:
Я сталкиваюсь со странной проблемой при использовании curl в файле jenkins. Вызов api прост, просто нужно передать токен авторизации в api, как показано ниже:
sh(script: "curl -u ${key}: https://mySonarQube/api/qualitygates/project_status?projectKey=ProjectName", returnStdout: true)
Это выдает ошибку, подобную приведенной ниже:
возникшее исключение: в поле com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals в объекте com.cloudbees.groovy.cps.impl.BlockScopeEnv@3fc99581 в поле com.cloudbees.groovy.cps.impl.CallEnv.caller в объекте com.cloudbees.groovy.cps.impl.FunctionCallEnv@6ba4ed98 в поле com.cloudbees.groovy.cps.Continuable.e в объекте org.jenkinsci.plugins.workflow.cps.SandboxContinuable@7caf7588 в поле org.jenkinsci.plugins.workflow.cps.CpsThread.program в объектной организации.jenkinsci.plugins.workflow.cps.CpsThread@6a1f4c92 в поле org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.threads в объектной организации.jenkinsci.plugins.workflow.cps.CpsThreadGroup@12b444a в объекте org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@12b444a Вызвано: java.io.NotSerializableException: groovy.json.internal.LazyMap в org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:926) в org.jboss.marshalling.river.BlockMarshaller .doWriteObject(BlockMarshaller.java:65) в org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56) в org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50) в org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179) в java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344) в java.util.HashMap.internalWriteEntries(HashMap.java:1793) в java.util.HashMap.writeObject(HashMap.java:1363) в sun.reflect .Созданный methodaccessor29.invoke(неизвестный источник) в sun.reflect.Делегирование methodaccessorimpl.invoke(делегирование methodaccessorimpl.java:43) в java.lang.reflect.Method.invoke(Method.java:498) в org.jboss.marshalling.reflect.JDKSpecific$SerMethods.callWriteObject(JDKSpecific.java:156) в org.jboss.marshalling.reflect .SerializableClass.callWriteObject(SerializableClass.java:191) в org.jboss.marshalling.river.RiverMarshaller .doWriteSerializableObject(RiverMarshaller.java:1028) в org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) в org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082) в org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040) в org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java: 920) в org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082) в org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040) в org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019) в org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) в org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082) в org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040) в org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019) в org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) в org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082) в org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040) в org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) в org.jboss.marshalling.river.BlockMarshaller .doWriteObject(BlockMarshaller.java:65) в org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56) в org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50) в org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179 ) в java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344) в java.util.concurrent.ConcurrentSkipListMap.writeObject(ConcurrentSkipListMap.java:1437) в sun.reflect .Созданный methodaccessor474.invoke(неизвестный источник) в sun.reflect.Делегирование methodaccessorimpl.invoke(делегирование methodaccessorimpl.java:43) в java.lang.reflect.Method.invoke(Method.java:498) в org.jboss.marshalling.reflect.JDKSpecific$SerMethods.callWriteObject(JDKSpecific.java:156) в org.jboss.marshalling.reflect .SerializableClass.callWriteObject(SerializableClass.java:191) в org.jboss.marshalling.river.RiverMarshaller .doWriteSerializableObject(RiverMarshaller.java:1028) в org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) в org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082) в org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040) в org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920) в org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58) в org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111) в org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.lambda$writeObject$0(RiverWriter.java:144) в org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:237) в org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.writeObject(RiverWriter.java:143) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:557) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:534) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgramIfPossible(CpsThreadGroup.java:517) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:441) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$ 400(CpsThreadGroup.java:96) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.вызовите (CpsThreadGroup.java:312) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.вызовите (CpsThreadGroup.java:276) в org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.вызовите (CpsVmExecutorService.java:67) в java.util.concurrent.FutureTask.run(FutureTask.java:266) в hudson.remoting.SingleLaneExecutorService$1.запустите(SingleLaneExecutorService.java:131) в jenkins.util.ContextResettingExecutorService$1.запустите(ContextResettingExecutorService.java:28) в jenkins.security.Олицетворение ExecutorService$1.запустите(Олицетворение ExecutorService.java:59) в java.util.concurrent.Исполнители $RunnableAdapter.call(Executors.java:511) в java.util.concurrent.FutureTask.run(FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) на java.lang.Thread.run(Thread.java:748) Завершено: СБОЙ
Кажется, на данный момент это не удается Caused: java.io.NotSerializableException: groovy.json.internal.LazyMap
, но я не знаю, что происходит за сценой.
Это странно, потому что при вызове другого API он работает просто отлично. И если я открою этот api в браузере, я увижу там содержимое json, которое является обычным содержимым json.
Кто-нибудь знает, в чем может быть проблема?
Комментарии:
1. Можете ли вы запустить ту же самую точную команду cURL из командной строки и сообщить нам, что такое стандартный вывод / stderr? Также вы можете опубликовать версию Jenkins
2. Та же команда в CMD выдает правильный ответ json. Версия Jenkins. 2.204.2
3. Каков заголовок содержимого ответа?
4. У меня было два вызова curl один за другим, всегда первый работает нормально, второй терпит неудачу, после разделения их на два разных шага они работали просто отлично. Это так странно, в чем может быть проблема. Один из советов, который может помочь, заключается в том, что я использовал sleep(время: 10, единица измерения: «СЕКУНДЫ») перед вызовами curl, я не уверен, влияет ли это каким-либо образом на сценарий. На данный момент я просто буду считать это исправленным, потому что я все равно сохраняю их на разных этапах. Спасибо за помощь 🙂
5. Извините, я не смог больше помочь