- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
任何线索为什么并行会为如此简单的事情抛出序列化错误:
branches[nodeSpec] = {
node(nodeSpec) {
echo("remote");
}
java.io.NotSerializableException: hudson.plugins.sshslaves.SSHLauncher at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860) at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967) at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854) 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)
// Get all Nodes from Jenkins instance
def nodelist = Jenkins.getInstance().getNodes()
branches = [:]
// Iterate list -- NOTE: we cannot use groovy style or even modern java style iteration
for (int i =0; i < nodelist.size(); i++) {
Slave node = nodelist[i]
def nodeSpec = node.name.toString()
if (node.getComputer().isOnline()) {
println "Create Task for ${nodeSpec}"
branches[nodeSpec] = {
node(nodeSpec) {
echo("remote");
}
}
}
}
parallel branches
最佳答案
更新:从下面的评论中,我发现我误解了 NonCPS 注释的要求。如果在分支内使用方法,这对于防止出现问题是必要的,并且即使在分支执行之前使用该方法也是为了清晰起见。
我有关于它为什么起作用的工作代码和理论。
@NonCPS
List <String> getOnlineNodeNames() {
List <String> nodeNames = []
def allNodes = Jenkins.getInstance().getNodes()
for (int i =0; i < allNodes.size(); i++) {
Slave node = allNodes[i]
if (node.getComputer().isOnline()) {
nodeNames.add(node.name.toString())
}
}
return nodeNames
}
List<String> nodeList = getOnlineNodeNames()
branches = [:]
for (int i =0; i < nodeList.size(); i++) {
String nodeName = nodeList[i]
if(nodeName.contains("win")) {
branches[nodeName] = { node(nodeName) {
bat '''@echo off
DoMainTasks....'''
}
}
} else {
branches[nodeName] = { node(nodeName) {
sh '''set +x
DoMainTasks....'''
}
}
}
}
parallel branches
关于jenkins 并行工作流插件因 java.io.NotSerializableException : hudson. plugins.sshslaves.SSHLauncher 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35490182/
任何线索为什么并行会为如此简单的事情抛出序列化错误: branches[nodeSpec] = { node(nodeSpec) { echo("remote");
我是一名优秀的程序员,十分优秀!