Jenkins触发时间参数插件

时间:2012-05-15 05:23:41

标签: parameters jenkins jenkins-plugins

我们有很多jenkins任务处理一些与日期相关的数据, 例如,每小时每天的聚合。

所有这些都配置为定期运行 但是原生jenkins无法使用动态参数自动触发定期作业,我们必须在脚本内部计算所需的参数 执行时间处理时间, 例如在bash脚本代码中:

PREVHOUR=$(date --date="-1 hour" "+%Y-%m-%d %H")

我们还可以使用 $ BUILD_ID 环境变量来获取构建开始时间。

问题是: 当所有的老虎机(工人)都很忙时,詹金斯就把这份工作投入了 的队列即可。 当这样的任务发生时,参数计算将是错误的 触发后的下一个小时执行。

因此,我们无法找到获得 TRIGGER时间的方式,无法构建开始时间

当然,几乎没有什么不方便的解决方案:

  • 在预留的计算机上运行简单的定期作业,该计划通过url使用params
  • 触发其他作业
  • 跟踪脚本上次运行时间的文件

我们已经尝试找到符合我们需求的插件,并且已经找到了  this plugin,但它仅适用于手动(UI“立即构建”点击)模式。

Jenkins是否有任何插件可以在周期性触发时间计算dinamic参数?

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以使用ScriptTrigger插件。它定期评估Groovy脚本并支持参数化构建。

  1. 向项目添加TRIGGER_TIME参数。
  2. 使用Groovy脚本:

    now = new Date();
    param = new File("trigger.time");
    param.write("TRIGGER_TIME="+now.toString());
    return true;
    

    它会在每次轮询时将触发时间写入属性文件“trigger.time”并触发新构建。

  3. Properties File Path(在高级设置中)设置为“trigger.time”,每个预定的版本都会在指定时间内获得TRIGGER_TIME参数。

答案 1 :(得分:2)

两个建议:

  1. 触发工作,恕我直言,是一个非常合理的解决方案。您可以使用更方便的方法触发作业 - Parameterized Trigger Plugin

  2. 另一种方法是使用EnvInject Plugin。例如,您可以在脚本中计算参数,将它们保存到属性文件中,然后使用插件从文件中注入环境变量。 See this answer