如何修复jenkins管道中的jnlplancher异常

如何修复jenkins管道中的jnlplancher异常,jenkins,jenkins-pipeline,jenkins-groovy,Jenkins,Jenkins Pipeline,Jenkins Groovy,我们有一个脚本,它使用vSphere将快照还原到计算机并打开 然后我们检查代理是否可用,如下所示: def checkAgentAvalability(agName, tolerance) { try { int sleepTime = 5 def jenkinsObj = Jenkins.instance.getNode(agName) printLogger("INFO", "checkAgentAvalability() A

我们有一个脚本,它使用vSphere将快照还原到计算机并打开

然后我们检查代理是否可用,如下所示:

    def checkAgentAvalability(agName, tolerance) {
    try {
        int sleepTime = 5
        def jenkinsObj = Jenkins.instance.getNode(agName)
        printLogger("INFO", "checkAgentAvalability()  Agent: " + agName + ", tolerance: " + tolerance)
        handleSlaveMode(agName, false)
        sleep (5000)
        for (int i = 0; i < tolerance; i++) {
            if (jenkinsObj.toComputer().isOnline()) {
                if (jenkinsObj.getRootPath() != null && !jenkinsObj.getComputer().getLog().contains('error'))
                {
                    return true
                } else {
                    sleep (5000)
                }
            }
            sleep (5000)
        }
        return false
    }
    catch (err)
    {
        return false
    }
}
如何解决这个问题?我在互联网上找不到根本原因

如何检查自动创建的代理是否已启动?我们有时也会在代理启动后断开连接


谢谢

您应该使用
@NonCPS
。一般来说,Jenkins假设所有对象都是可序列化的,因为它希望暂停/恢复作业。如果它们不是(例如
计算机
),它们需要一些特殊的元数据,这样詹金斯就会知道这一点

@NonCPS
def checkAgentAvalability(agName, tolerance) {
    try {
        ...

下面的答案正确回答了你的问题吗?
@NonCPS
def checkAgentAvalability(agName, tolerance) {
    try {
        ...