Đã giải quyết : Nhờ câu trả lời dưới đây của S.Richmond. Tôi cần hủy đặt tất cả các bản đồ được lưu trữ thuộc groovy.json.internal.LazyMap
loại có nghĩa là vô hiệu hóa các biến envServers
và object
sau khi sử dụng.
Bổ sung : Những người đang tìm kiếm lỗi này có thể muốn sử dụng bước đường dẫn Jenkins readJSON
thay thế - tìm thêm thông tin tại đây .
Tôi đang cố gắng sử dụng Jenkins Pipeline để lấy đầu vào từ người dùng được chuyển cho công việc dưới dạng chuỗi json. Sau đó, Pipeline phân tích cú pháp này bằng cách sử dụng slurper và tôi chọn ra thông tin quan trọng. Sau đó, nó sẽ sử dụng thông tin đó để chạy 1 công việc nhiều lần song song với các thông số công việc khác nhau.
Cho đến khi tôi thêm mã bên dưới "## Error when below here is added"
, tập lệnh sẽ chạy tốt. Ngay cả đoạn mã bên dưới điểm đó cũng sẽ tự chạy. Nhưng khi kết hợp tôi nhận được lỗi dưới đây.
Tôi nên lưu ý rằng công việc được kích hoạt được gọi và chạy thành công nhưng lỗi dưới đây xảy ra và không thực hiện được công việc chính. Bởi vì điều này, công việc chính không chờ đợi sự trở lại của công việc được kích hoạt. Tôi có thể thử / bắt xung quanh build job:
tuy nhiên tôi muốn công việc chính đợi cho công việc được kích hoạt kết thúc.
Bất cứ ai có thể hỗ trợ ở đây? Nếu bạn cần thêm thông tin cho tôi biết.
Chúc mừng
def slurpJSON() {
return new groovy.json.JsonSlurper().parseText(BUILD_CHOICES);
}
node {
stage 'Prepare';
echo 'Loading choices as build properties';
def object = slurpJSON();
def serverChoices = [];
def serverChoicesStr = '';
for (env in object) {
envName = env.name;
envServers = env.servers;
for (server in envServers) {
if (server.Select) {
serverChoicesStr += server.Server;
serverChoicesStr += ',';
}
}
}
serverChoicesStr = serverChoicesStr[0..-2];
println("Server choices: " + serverChoicesStr);
## Error when below here is added
stage 'Jobs'
build job: 'Dummy Start App', parameters: [[$class: 'StringParameterValue', name: 'SERVER_NAME', value: 'TestServer'], [$class: 'StringParameterValue', name: 'SERVER_DOMAIN', value: 'domain.uk'], [$class: 'StringParameterValue', name: 'APP', value: 'application1']]
}
Lỗi:
java.io.NotSerializableException: groovy.json.internal.LazyMap
at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860)
at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:569)
at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65)
at org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56)
at org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50)
at org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at java.util.LinkedHashMap.internalWriteEntries(Unknown Source)
at java.util.HashMap.writeObject(Unknown Source)
...
...
Caused by: an exception which occurred:
in field delegate
in field closures
in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@5288c