首页 > 解决方案 > 在 n 到 m 的范围内,每 2 小时随机触发一次 Jenkins 作业

问题描述

我有一个 jenkins 工作,我想在nm范围内随机每 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 之间,但时间每次都相同。如何强制触发器在给定范围内每次构建时更改分钟?

标签: javajenkinscontinuous-integrationscheduled-tasks

解决方案


詹金斯似乎还没有这样的功能。我能够通过添加一个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 编写的,但在其他语言中会类似。


推荐阅读