詹金斯 - 在一定时间后触发工作

时间:2017-02-20 15:20:43

标签: jenkins jenkins-plugins

我正在尝试查看是否有一个可以执行我想要的插件或者我在Jenkins触发器方面缺少的内容。为了举例说明我们想要做什么,让我解释一下目前情况如何发生。

  1. 合并
  2. Jenkins选择合并,在远程构建机器上进行更改
  3. 服务器已停止
  4. 构建,检查等已完成
  5. 服务器已启动
  6. 所以上面的一切都很好,也很好用,但是我们要做的是在Jenkins获取合并后触发服务器停止和构建。虽然这是一个大型项目,有多个轨道,我们可以说在10-30分钟的窗口内完成4-10次合并。显然,我们不希望队列中有4-10个作业都运行相同的东西。

    那么实现上述目标的最佳方法是什么,即基于合并的Jenkins触发器,等待x分钟,如果没有其他合并,则触发构建过程,如果新的合并重置计数器回到x分钟并等待再次?

    我们可以通过Jenkins内置任何插件或触发器吗? (我找不到任何明显的东西)或者这是一个我们需要参数化构建并运行一些脚本的案例吗?

2 个答案:

答案 0 :(得分:1)

不知道有任何插件执行此操作。但是,如果您正在使用作业类型Pipeline或愿意将其转换为Pipelines,那么以下Jenkins管道将可以解决这个问题:

// Sleep for a certain time, in this case 20 seconds
sleep(20);

// Check if there is a newer build, if there is abort this one.
if (currentBuild.nextBuild != null) {
  echo "Got newer build, aborting this one!"
  currentBuild.result = Result.NOT_BUILT;
  return;
}

// Do the rest of building here

答案 1 :(得分:0)

您可以从URL运行以下命令,该命令可以达到目的。 https:/// build?delay = 600sec