java.io.NotSerializableException: hudson.model.FreeStyleProject
java.io.NotSerializableException: hudson.model.FreeStyleProject
我正在尝试在 Jenkins 中执行管道脚本。
这是我的脚本:
import com.cloudbees.groovy.cps.NonCPS
@NonCPS
def getJobVariable(jobName,varName){
job = Jenkins.instance.getItemByFullName(jobName)
newJob = job.getLastBuild()
return newJob.getEnvVars().get(varName,null)
}
node{
stage 'props'
api = build job: 'Props'
buildID = api.getNumber()
build job: 'Parameterized', parameters: [[$class: 'StringParameterValue', name: 'string_parameter', value: getJobVariable('Props','filename')]];
}
但我不断收到 NotSerializableException。我想,我的 getJobVariable 方法有问题。请帮忙
添加以下内容:
job = null
之后
newJob = job.getLastBuild()
我做了一些测试,因为我的管道作业(对于 Matrix)有同样的问题。
解决方法是在job
之前加上def
或者声明之前的对象名称(这里是Job
)。
NotSerializableException
消失后
如果这不能解决您的问题,您还可以在声明前添加 @NonCPS
标志。参见官方文档:serializing-local-variables.
Jenkins 阶段需要序列化,以便它们能够在作业和 jenkins 重新启动后继续存在。
现在,如果你有一些 NotSerializable 的变量在 [Pipeline] // stage
阶段之后仍然存在,那么我们会得到这个错误。
所以我们应该在它触及阶段边界之前将变量设置为空
进一步阅读https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md#serializing-local-variables
我正在尝试在 Jenkins 中执行管道脚本。 这是我的脚本:
import com.cloudbees.groovy.cps.NonCPS
@NonCPS
def getJobVariable(jobName,varName){
job = Jenkins.instance.getItemByFullName(jobName)
newJob = job.getLastBuild()
return newJob.getEnvVars().get(varName,null)
}
node{
stage 'props'
api = build job: 'Props'
buildID = api.getNumber()
build job: 'Parameterized', parameters: [[$class: 'StringParameterValue', name: 'string_parameter', value: getJobVariable('Props','filename')]];
}
但我不断收到 NotSerializableException。我想,我的 getJobVariable 方法有问题。请帮忙
添加以下内容:
job = null
之后
newJob = job.getLastBuild()
我做了一些测试,因为我的管道作业(对于 Matrix)有同样的问题。
解决方法是在job
之前加上def
或者声明之前的对象名称(这里是Job
)。
NotSerializableException
消失后
如果这不能解决您的问题,您还可以在声明前添加 @NonCPS
标志。参见官方文档:serializing-local-variables.
Jenkins 阶段需要序列化,以便它们能够在作业和 jenkins 重新启动后继续存在。
现在,如果你有一些 NotSerializable 的变量在 [Pipeline] // stage
阶段之后仍然存在,那么我们会得到这个错误。
所以我们应该在它触及阶段边界之前将变量设置为空
进一步阅读https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md#serializing-local-variables