fix: 修复Jenkins Pipeline序列化错误
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled

问题:java.io.NotSerializableException: java.util.Collections
原因:在each循环内使用Map导致序列化问题

解决方案:
- 使用if-else语句替代Map查找
- 避免在Pipeline中使用不可序列化的集合类型
- 保持相同的功能但使用可序列化的方式实现
This commit is contained in:
lzh
2026-01-14 00:31:20 +08:00
parent 5515e94439
commit 0e2f259193

24
Jenkinsfile vendored
View File

@@ -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}"