用户启动时构建失败且没有错误

Build fails without an error while getting started by user

我有一个以下管道,我试图让启动它的用户 -

isStartedByUser = currentBuild.rawBuild.getCause(hudson.model.Cause$UserIdCause)

pipeline {
    agent {
        label {
            label "<node-name>"
        }
    }
    stages {
        stage('Testing') {
            steps {
                script {
        println "Started by " + isStartedByUser
                }
            }

        }
    }
}

当运行构建时,它被标记为失败但在控制台输出中没有错误-

Started by hudson.model.Cause$UserIdCause@f42b6809
[Pipeline] }
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] }
[Pipeline] End of Pipeline
Finished: FAILURE

请帮助理解为什么它会毫无问题地失败。

currentBuild.rawBuild.getCause(hudson.model.Cause$UserIdCause)的返回对象类型为model.hudson.Cause,不可序列化。 参考:https://javadoc.jenkins-ci.org/hudson/model/Cause.html(没有实现Serializable接口)

根据您的需要,您可以添加一个 toString() 来解决您的问题或将其放入单独的方法中:

toString():

isStartedByUser = currentBuild.rawBuild.getCause(hudson.model.Cause$UserIdCause).toString()

方法:

def getCause() {
    return currentBuild.rawBuild.getCause(hudson.model.Cause$UserIdCause);
}

原来的异常已经被抛出但由于某种原因被吞掉了。您可以通过将环境块添加到您的管道来证明这一点。通过执行管道,您现在会看到异常。

environment {
        isStartedByUser = currentBuild.rawBuild.getCause(hudson.model.Cause$UserIdCause)
    }