java - 在 n 到 m 的范围内,每 2 小时随机触发一次 Jenkins 作业
问题描述
我有一个 jenkins 工作,我想在n到m范围内随机每 2 小时执行一次。
例如:
n = 5
m = 25
预计时间表:
Mar 29, 2019 2:07 PM
Mar 29, 2019 4:17 PM
Mar 29, 2019 6:13 PM
Mar 29, 2019 8:22 PM
...
我试过以下:
H(5-25) H/2 * * *
每 2 小时 8 分钟运行一次
据我了解,该作业每两小时随机运行一次,时间间隔在 5 到 25 之间,但时间每次都相同。如何强制触发器在给定范围内每次构建时更改分钟?
解决方案
詹金斯似乎还没有这样的功能。我能够通过添加一个RandomWait
带有单个测试的新作业来解决这个问题,该测试只等待随机时间。然后这项工作在 0 分钟每 2 小时运行一次,执行后触发我的“主要”工作。
测试中的示例代码RandomJob
:
public void waitRandomTime() {
int max = 31;
System.out.println("Peeking a random number in a range between 0 and " + (max - 1));
int minute = new Random().nextInt(max);
System.out.println("Start waiting " + minute + " minutes");
for (int i = 0; i < minute; i++) {
System.out.println("Minute: " + i);
waitABit(60000); // wait one minute
}
}
结果,我现在有了这个作业的执行时间:
PS这个解决方案是用 Java 编写的,但在其他语言中会类似。
推荐阅读
- javascript - 如何抓取在滚动时更改其元素的网站?
- reactjs - 动态获取应用程序基本 URL
- microsoft-graph-api - 创建技能熟练度失败并出现错误“ErrorAccessDeniedForRole”
- c# - Exchange Web 服务将邮件保存为草稿集 DateTimeSent
- c++ - 有没有更简单的方法来“汇集”函数调用?
- python - 在已定位的数据帧上使用 loc
- c# - 如何设置 2D Colliders 和 Rigibody2D?
- html - 我如何隐藏脚本标签中的随机数值
- javascript - 无法使用 lodash 和 vueJS 对数组进行排序
- sql - 在postgresql中有条件地删除部分行