2017-02-20 21 views
0

我想看看是否有一个插件,可以做我想要的东西或我错过了关于詹金斯触发器的东西。给我们一个我们想要做的例子,让我解释一下目前的情况。詹金斯 - 在一定的时间后触发作业

  1. 合并由
  2. 詹金斯在合并回升,远程构建机器
  3. 服务器停止
  4. 建造,检查,等完成
  5. 服务器上启动拉动变化

所以上述都很好,很好,但是我们想要做的是触发服务器停止并在Jenkins提取合并之后构建。尽管如此,这是一个大型项目,有多条轨道,我们可以说在10-30分钟的窗口内完成了4-10个合并。所以显然我们不希望在队列中有4-10个工作都运行相同的事情。

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

是否有任何插件或触发器内置到詹金斯,我们可以实现这一点? (我找不到任何明显的东西)或者是这种情况下,我们需要参数化构建并运行一些脚本?

回答

1

不知道有这样做的任何插件。但是,如果你正在使用的作业类型管道或愿意将其转换为管道,那么下面的詹金斯管道将这样的伎俩:

// 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 
+0

对不起,在接受延迟,不得不玩的管道,但我设法得到我想用的东西。谢谢你的提示 :) – Grinch91