当前位置: 首页 > 知识库问答 >
问题:

在AWS ECS上运行slave时的Jenkins java.io.NotSerializableException

羊舌洛华
2023-03-14

我遇到了一个奇怪的问题:我以docker映像运行我的从服务器,有时在主节点上作为docker容器运行,有时在ECS(Fargate)上使用Amazon弹性容器服务插件运行。

publishLambda(
       awsAccessKeyId:"${env.AWS_ACCESS_KEY_ID}",
       awsSecretKey:"${env.AWS_SECRET_ACCESS_KEY}",
       awsRegion:"${lambda_config.region}",
       functionARN:lambda_name,
       functionAlias:"DEV"
      )

java.io.notSerializableException:com.xti.jenkins.plugin.awslambda.publish.lambdapublishServiceResponse at java.io.objectOutputStream.writeObject0(ObjectOutputStream.java:1184)at java.io.objectOutputStream.writeObject(objectOutputStream.java:348)at 18-224-68-207.US-EAST-2.compute.amazonaws.com/18.224.68.207:40038,在Hudson.remoting.channel.attachCallsiteStackTrace(channel.java:1741),在Hudson.remoting.userrequest$exceptionresponse.retrieve(userrequest.java:357),在Hudson.remoting.channel.call(channel.java:955),在p.在org.jenkinsci.plugins.workflow.steps.cores执行(lambdapublishBuildstep.java:46)tep$execution.run(corestep.java:80)在org.jenkinsci.plugins.workflow.steps.corestep$execution.run(corestep.java:67)在org.jenkinsci.plugins.workflow.steps.synchronoBlockingstepexecution.lambda$start$0(SynchronousnoBlockingstepexecution.java:47)在java.util.concurrent.executors$runnableadapter.call 9)在java.util.concurrent.ThreadPoolExecutor$worker.run处(ThreadPoolExecutor.java:624)

导致:java.io.ioException:无法在hudson.remoting.userrequest.serialize com.xti.jenkins.plugin.awslambda.publish.lambdapublishServiceResponse@4ec0e00f在hudson.remoting.userrequest.serialize(userrequest.java:275)在hudson.remoting.userrequest.perform(userrequest.java:223)在hudson.remoting.userrequest.perform(userrequest.java:54)在futureTask.java:266)在java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1149)在java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:624)在hudson.remoting.engine$1.lambda$newthread$0(engine.java:93)

导致:java.lang.runtimeException at com.xti.jenkins.plugin.awslambda.publish.lambdapublishBuildStep.perform(lambdapublishBuildStep.java:66)at com.xti.jenkins.plugin.awslambda.publish.html" target="_blank">lambdapublishBuildStep.perform(lambdapublishBuildStep.java:46)at flow.steps.synchronousnonblockingstepexecution.lambda$start$0(Synchronousnonblockingstepexecution.java:47)在java.util.concurrent.executors$runnableadapter.call(executors.java:511)在java.util.concurrent.futuretask.run(Futuretask.java:266)在java.util.concurrent.threadpoolexecutor.runworker

共有1个答案

郭乐意
2023-03-14

原因是Amazon弹性容器服务插件中的LambdaPublishServiceResponse类没有继承java.io.Serializable。

而且由于运行在ECS(fargate)上的从机通过网络进行的java远程处理必须被串行化才能由主机检索,因此必须进行此更改。已经提出了一个公关https://github.com/xt-i/aws-lambda-jenkins-plugin/pull/100

 类似资料:
  • 以下是我的设置: 在“Manage Jenkins”->“Manage Nodes”下,我创建了一个名为“TestSlave”的新节点。 下载JNLP以启动从服务器后,连接到主服务器的小从代理窗口仍然停留在“Connecting to jenkins.master.proxy:9020”上。 JNLP如下: 多谢

  • 问题内容: 我们需要能够运行消耗两个奴隶的詹金斯工作。(或者,两个作业,如果我们可以保证它们同时运行,并且至少有一个可能知道另一个是什么。)这种情况是我们有一个重量级的应用程序,需要针对它进行测试。测试在一台计算机上运行,​​应用程序在另一台计算机上运行。将它们放在同一主机上是不切实际的。 现在,我们有一个Jenkins作业,该作业使用脚本启动专用的应用服务器,安装正确的版本,正确的数据,然后对其

  • 问题内容: 我尝试了以下文档以在Google云上运行node.js应用程序:https : //cloud.google.com/nodejs/getting-started/hello- world Node.js运行正常,但是如果我运行,我会…。 问题答案: 最新的Google Cloud SDK 0.9.65版本存在一个错误。 您可以使用以下命令还原到Cloud SDK 0.9.64: 下一

  • 我有一个Jenkins master运行在Windows Server2016上。我需要能够运行linux容器来运行一些自动化的e2e测试。由于我不想讨论的原因,我无法在这台机器上启用hyper-v。这使我无法在Jenkins master上安装lcow和docker 相反,我所做的是在virtualbox中设置一个Ubuntu18.04VM,并在那里安装docker。我已经将VM配置为Jenki

  • 问题内容: 假设我在同一台计算机上同时运行两个Java程序。这些程序将在单个JVM实例中运行还是在两个不同的JVM实例中运行? 问题答案: 如果您使用命令(从命令行)开始每个命令,它们将作为完全独立的JVM运行。 “程序”可以作为在一个JVM中运行的单独线程启动。

  • 我正在搜索一个在运行时注册@RestController的解决方案。我目前正在向