jenkins - 如何在声明性 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')
}
}
}
}
该变量将无法在重新启动后继续存在。
为了重新启动,您可以序列化变量的值并将其保存到文件中,如果文件存在,则在第一阶段取消序列化它
推荐阅读
- ruby - 需要“时间”后的很多警告
- api - 是否有任何亚马逊 API 可以访问从买家账户下达的订单的详细信息?
- ruby - 如何使用添加的方法创建修改对象的实例?
- angular - 在 Angular 中通过 *ngIf 创建变量
- asp.net - 应用程序初始化 IIS - 日志文件
- mysql - WordPress Docker 容器无法连接到 MySQL 容器
- cmake - Cmake配置错误,CMAKE_CONFIGURATION_TYPES Debug;Release;MinSizeRel;RelWithDebInfo
- arrays - execv 参数错误 - “预期为 char * const* 但参数的类型为 const char *”
- c - 使用 printf("%.*s") 的指针差异
- python - 上传包含密钥的 django 项目时,我应该使用哪个 gitignore 文件?