如何在声明式 Jenkinsfile 中跨阶段保留非字符串对象?



在声明式管道 Jenkinsfile 中,似乎env变量属性的更改在各个阶段和管道重新启动之间保留,而不管阶段如何。 但是,似乎env上的所有内容都必须是字符串。 有没有办法跨阶段保留非字符串内容 - 不使用env或写入文件?

具体来说,我想我可能会为此使用params,但似乎params中的值无法更改。 还有其他想法吗?

要跨阶段保留变量的值,请使用@Field注释在管道外部定义变量

import groovy.transform.Field
@Field def toto
pipeline {
agent none
stages {
stage('stage1') {
steps {
toto = { name -> println name }  
}
}
stage('stage2') {
steps {
println toto('toto')
}
}
}
}

该变量将无法在重新启动后继续运行。

为了在重新启动中幸存下来,您可以序列化变量的值并将其保存到文件中,如果文件存在,则在第一阶段将其反序列化

最新更新