【问题标题】:Not able to solve Jenkins NotSerializableException error无法解决 Jenkins NotSerializableException 错误
【发布时间】:2018-07-19 13:46:44
【问题描述】:
import hudson.model.*;
import hudson.AbortException;
import jenkins.model.Jenkins;


@NonCPS
def allNodes = jenkins.model.Jenkins.instance.nodes
def triggerJob = false


for (String  node: allNodes) {
    if ( node.getComputer().isOnline() && node.nodeName == "ABC" ) {
        println node.nodeName + " " + node.getComputer().countBusy() + " " + 
        node.getComputer().isAcceptingTasks()
        triggerJob = true
        break
  }
}

if (triggerJob) {
    println("triggering build as node is available")
    build job: 'jobName', parameters:
        [
            /** list of string Parameters **/
        ]
} 

上面的作业触发了构建,但失败了:

发生的异常: 在字段 hudson.model.Slave.launcher 引起:java.io.NotSerializableException: hudson.slaves.JNLPLauncher

【问题讨论】:

    标签: jenkins groovy jenkins-pipeline slave notserializableexception


    【解决方案1】:

    您只能在代码中使用实现Serializable 接口的类——NodeComputer 都没有。 为了使用它们,您需要将各自的代码封装在 @NonCPS 方法中,例如:

    import hudson.model.*;
    import hudson.AbortException;
    import jenkins.model.Jenkins;
    
    @NonCPS
    def shallTrigger() {
        def triggerJob = true
        def allNodes = jenkins.model.Jenkins.instance.nodes
    
    
        for (String  node: allNodes) {
            if ( node.getComputer().isOnline() && node.nodeName == "ABC" ) {
                println node.nodeName + " " + node.getComputer().countBusy() + " " + 
                node.getComputer().isAcceptingTasks()
                triggerJob = true
                break
            }
        }
    }
    if (shallTrigger) {
        println("triggering build as node is available")
        build job: 'jobName', parameters:
            [
                /** list of string Parameters **/
            ]
    } 
    

    【讨论】:

    • 很高兴知道,也许您想相应地标记此答案?谢谢。
    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 2013-03-12
    • 2018-01-05
    • 2018-06-05
    • 2015-04-08
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多