Tập lệnh không lặp qua tất cả các giá trị của mảng 'mô-đun'.Groovy .each chỉ lặp lại một lần
class Module {
public String name = '';
public Boolean isCustom = false;
public Module(String name, Boolean custom){
this.name = name;
this.isCustom = custom;
}
}
//creates array from the ext_module env var
modules = [];
EXT_MODULE.split(',').each {
modules.add(new Module(it, false));
}
println modules;
modules.each {
println "MODULE NAME ::::: ${it.name}"
if(it.isCustom)
{
println "install custom";
} else {
println "install non custom";
}
};
Đây là kết quả của quá trình chạy. Mảng hiển thị 4 phần tử, nhưng mã bên trong .each màu đen chỉ thực hiện một lần.
Chạy: In nhắn [Lớp @ 71f09325, Module @ e1ddb41, Module @ 7069a674, Module @ 1f68f952]
Chạy: In nhắn PHẦN TÊN ::::: puppetlabs-NTP
Chạy: In tin cài đặt không tùy chỉnh
Chạy: Kết thúc Workflow
Finished: SUCCESS
Điều này dường như là một vấn đề cụ thể Jenkins DSL. Đối với bất cứ lý do gì nó hoạt động nếu bạn thay đổi modules.each => cho (module trong module), bất cứ ai có thể cho tôi biết lý do tại sao? –
chỉ như vậy: 'def modules = EXT_MODULE.split (','). Thu thập {new Module (it, false)}'. mỗi khi bạn sử dụng 'mỗi' để xây dựng bộ sưu tập, một con mèo chết. thực tế, rằng không có 'def' là ok với jenkins (-scriptler); bạn không rối tung với một số nhà nước toàn cầu ở đây? – cfrick
Tôi đoán là có một số loại đóng cửa toàn cầu bị ảnh hưởng bởi .each và đang làm rối tung quá trình xây dựng Jenkins –