在声明式管道 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')
}
}
}
}
该变量将无法在重新启动后继续运行。
为了在重新启动中幸存下来,您可以序列化变量的值并将其保存到文件中,如果文件存在,则在第一阶段将其反序列化