我们有很多jenkins任务处理一些与日期相关的数据, 例如,每小时每天的聚合。
所有这些都配置为定期运行 但是原生jenkins无法使用动态参数自动触发定期作业,我们必须在脚本内部计算所需的参数 执行时间处理时间, 例如在bash脚本代码中:
PREVHOUR=$(date --date="-1 hour" "+%Y-%m-%d %H")
我们还可以使用 $ BUILD_ID 环境变量来获取构建开始时间。
问题是: 当所有的老虎机(工人)都很忙时,詹金斯就把这份工作投入了 的队列即可。 当这样的任务发生时,参数计算将是错误的 触发后的下一个小时执行。
因此,我们无法找到获得 TRIGGER时间的方式,无法构建开始时间。
当然,几乎没有什么不方便的解决方案:
我们已经尝试找到符合我们需求的插件,并且已经找到了 this plugin,但它仅适用于手动(UI“立即构建”点击)模式。
Jenkins是否有任何插件可以在周期性触发时间计算dinamic参数?
谢谢!
答案 0 :(得分:4)
您可以使用ScriptTrigger插件。它定期评估Groovy脚本并支持参数化构建。
TRIGGER_TIME
参数。使用Groovy脚本:
now = new Date();
param = new File("trigger.time");
param.write("TRIGGER_TIME="+now.toString());
return true;
它会在每次轮询时将触发时间写入属性文件“trigger.time
”并触发新构建。
Properties File Path
(在高级设置中)设置为“trigger.time
”,每个预定的版本都会在指定时间内获得TRIGGER_TIME
参数。 答案 1 :(得分:2)
两个建议:
触发工作,恕我直言,是一个非常合理的解决方案。您可以使用更方便的方法触发作业 - Parameterized Trigger Plugin。
另一种方法是使用EnvInject Plugin。例如,您可以在脚本中计算参数,将它们保存到属性文件中,然后使用插件从文件中注入环境变量。 See this answer