首页 > 解决方案 > 如何在没有 java.io.NotSerializableExceptions 的情况下将 Jenkins HTTP 请求插件与 Jenkins 凭据一起使用?

问题描述

我正在尝试将 Jenkins HTTP 请求插件(版本 1.8.27)与凭据插件一起使用进行身份验证。

              def result = httpRequest url: "https://url-to-query",
                 acceptType: 'APPLICATION_JSON',
                 authentication: 'credentialId', #replaced with actual credentialId
                 consoleLogResponseBody: false,
                 ignoreSslErrors: true

但我得到:

java.io.NotSerializableException: io.jenkins.plugins.credentials.secretsmanager.factory.CredentialsFactory$SecretSupplier
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
    at hudson.remoting.UserRequest._serialize(UserRequest.java:263)
    at hudson.remoting.UserRequest.serialize(UserRequest.java:272)
Caused: java.io.IOException: Unable to serialize jenkins.plugins.http_request.HttpRequestExecution@5e7cb2fb
    at hudson.remoting.UserRequest.serialize(UserRequest.java:274)
    at hudson.remoting.UserRequest.<init>(UserRequest.java:101)
    at hudson.remoting.Channel.call(Channel.java:999)
    at jenkins.plugins.http_request.HttpRequestStep$Execution.run(HttpRequestStep.java:353)
    at jenkins.plugins.http_request.HttpRequestStep$Execution.run(HttpRequestStep.java:331)
    at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:47)
    at hudson.security.ACL.impersonate2(ACL.java:449)
    at hudson.security.ACL.impersonate(ACL.java:461)
    at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:44)
    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)

从我读到的关于 NonSerializableException 的内容来看,这意味着 Jenkins 无法正确保存作业的状态,因为这不是针对该对象实现的?我正在使用 Jenkins 插件,所以我不确定我可能做错了什么。

标签: jenkins

解决方案


推荐阅读