我有一个构建软件的管道,其中包含用于版本的参数。
该参数默认为一个计算为当前日期的Groovy表达式。
但是当我运行它时,它使用的值实际上是上一次构建的日期。
示例:
- 构建版本#17(2022年3月25日,10:37:57)打印
2022-03-25T10:37:51.471369100
- 构建版本#18(2022年3月25日,11:08:33)打印
2022-03-25T10:37:57.857506500
- 构建版本#19(2022年3月25日,11:09:52)打印
Build version 2022-03-25T11:08:33.802312
管道脚本:
pipeline {
agent any
parameters {
string(
name: "BUILD_VERSION",
defaultValue: "Build version "+java.time.LocalDateTime.now()
)
}
stages {
stage("Print") {
steps {
echo params.BUILD_VERSION
}
}
}
}
我错过了什么?我如何将参数默认为执行日期?
2条答案
按热度按时间af7jpaap1#
当你使用字符串参数的
defaultValue
属性时,你实际上是在为项目的下一次执行设置默认值,而不是为当前的项目设置默认值--因为默认值只有在构建开始运行给定的参数后才会更新。因此,下一个构建将使用前一个构建设置的值执行。
为了克服这个问题,您需要定义一个参数,在构建开始运行之前更新该参数,然后构建将在执行中使用该参数。
一种方法是使用Extended Choice Parameter Plugin,当您在作业中单击带参数构建时,Extended Choice Parameter Plugin将在运行时生成默认值。这样,默认时间值将用于当前运行的构建。
下面是代码示例:
clj7thdc2#
如果时间戳不需要是可编辑的,也许这就足够了?