Jenkins Active Choice参数中Groovy脚本无返回值问题求助
Jenkins Active Choice参数中Groovy脚本无返回值问题求助
我来帮你分析下问题所在,你的脚本在Scriptler能正常运行,但放到Active Choice参数里就没返回值,主要是这几个原因:
- 返回值类型不符合要求:Active Choice参数需要返回可作为下拉选项的集合(比如
List<String>、String[]这类格式),但你最后返回的是java.util.Date对象,Jenkins没法直接把这个对象转换成参数选项,所以就显示为空了。 - 冗余打印语句干扰解析:脚本里的
println ex_date在Scriptler里能正常输出,但在Active Choice的执行环境中,额外的打印输出可能会干扰Jenkins对返回值的识别,建议删掉这行。 - 日期API混用的潜在问题:你同时用了Java 8的
java.time.LocalDate和旧的java.util.Date,虽然暂时没报错,但这种混合写法容易引发兼容性问题,建议统一使用Java 8+的日期API。
给你修正后的脚本示例,把日期转成字符串并以列表格式返回,这样Active Choice就能正常识别出选项了:
import java.time.format.DateTimeFormatter import java.time.LocalDate def exception_file = "test/10-01-2023/test" // 提取日期部分并转为字符串 def ex_date_str = exception_file.split('/')[1] def formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy") // 用Java 8+API解析日期 def expiry_date = LocalDate.parse(ex_date_str, formatter) // 返回包含日期字符串的列表,符合Active Choice的要求 return [expiry_date.format(formatter)]
如果你的需求是根据过期日期做逻辑判断(比如返回"已过期"或"未过期"这类选项),可以再调整脚本逻辑,核心就是要确保返回的是字符串类型的集合哦~
备注:内容来源于stack exchange,提问作者Alfred Hitchkock
相关产品推荐
相关产品推荐

