From 0e2f259193bfbc23975bf15c6494a8a6f4ecbd93 Mon Sep 17 00:00:00 2001 From: lzh Date: Wed, 14 Jan 2026 00:31:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DJenkins=20Pipeline?= =?UTF-8?q?=E5=BA=8F=E5=88=97=E5=8C=96=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题:java.io.NotSerializableException: java.util.Collections 原因:在each循环内使用Map导致序列化问题 解决方案: - 使用if-else语句替代Map查找 - 避免在Pipeline中使用不可序列化的集合类型 - 保持相同的功能但使用可序列化的方式实现 --- Jenkinsfile | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index d5ec398..a0623f3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -141,15 +141,21 @@ pipeline { sortedServices.each { service -> echo "🚀 Deploying ${service}..." - // 获取容器名称 - def serviceMap = [ - 'viewsh-gateway': 'aiot-gateway', - 'viewsh-module-system-server': 'aiot-system-server', - 'viewsh-module-infra-server': 'aiot-infra-server', - 'viewsh-module-iot-server': 'aiot-iot-server', - 'viewsh-module-iot-gateway': 'aiot-iot-gateway' - ] - def containerName = serviceMap[service] ?: "aiot-${service}" + // 直接使用字符串拼接获取容器名称(避免序列化问题) + def containerName = '' + if (service == 'viewsh-gateway') { + containerName = 'aiot-gateway' + } else if (service == 'viewsh-module-system-server') { + containerName = 'aiot-system-server' + } else if (service == 'viewsh-module-infra-server') { + containerName = 'aiot-infra-server' + } else if (service == 'viewsh-module-iot-server') { + containerName = 'aiot-iot-server' + } else if (service == 'viewsh-module-iot-gateway') { + containerName = 'aiot-iot-gateway' + } else { + containerName = "aiot-${service}" + } def sshKey = '/var/jenkins_home/.ssh/id_rsa' def sshOpts = "-o StrictHostKeyChecking=no -o ConnectTimeout=10 -i ${sshKey}"