目标是建立动态管道。我有几个具有特定配置的节点。我想在他们的全部上建立我的工作,而不是保留节点数并且没有复制和粘贴。
下面的代码可以工作,但是会抛出exception。是否有已知的解决方法来完成动态管道? (说明性或类似此示例的脚本管道)
for (aSlave in hudson.model.Hudson.instance.slaves) {
ActiveNode=aSlave.getLabelString()
node(ActiveNode){
node(aSlave.getLabelString()) { //java.io.NotSerializableException: hudson.plugins.libvirt.VirtualMachineLauncher
stage(aSlave.name){
echo 'Hello World'
}
}
}
}
答案 0 :(得分:3)
用@NonCPS注释的方法将方法返回的结果包装在不可序列化的对象中。
aSlave.getLabelString()不是罪魁祸首,而是aSlave。可能的解决方案是:
@NonCPS
def agentNames() {
hudson.model.Hudson.instance.slaves.collect{[(it.labelString):(it.name)]}
}
for (agent in agentNames()) {
node(agent.keySet()[0]) {
stage(agent.values()[0]){
echo 'Hello World'
}
}
}