java - 每 2 小时在 n 到 m 范围内的随机分钟触发一次 Jenkins 作业

标签 java jenkins continuous-integration scheduled-tasks

我有一个 jenkins 作业,我想每 2 小时随机执行一次,范围从 nm

例如:

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 分钟运行一次

img

据我了解,该作业每两个小时运行一次,间隔时间为 5 到 25 之间的随机分钟,但每次的分钟都是相同的。如何强制触发器更改给定范围内每个构建的分钟?

最佳答案

好像Jenkins还没有这样的功能。我能够通过添加一个新的 RandomWait 作业和一个测试来解决这个问题,该作业仅等待随机时间。然后这个作业每 2 小时 0 分钟运行一次,执行后触发我的“主要”作业。

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
    }
}

结果我现在有这个作业的执行时间:

img

PS此解决方案采用 Java 语言,但在其他语言中也类似。

关于java - 每 2 小时在 n 到 m 范围内的随机分钟触发一次 Jenkins 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55467823/

相关文章:

java - 识别Web服务的类型

c++ - 让 Jenkins 忽略 cmake 错误

jenkins - 主页上选项卡的顺序

.net - 在哪里可以下载适用于我的构建服务器的 .NET 4.5 多目标包?

python - 向 Buildbot 添加自定义功能

java - 我的应用程序卡住,如何在其中实现线程?

java - 创建新的 java 实体类 (Java SE 1.7)

java - 如何在 if 语句和 for 循环之外获取数组

linux - Jenkins 在远程机器上执行带有参数的 shell 脚本

java - TeamCity 和挂起的 Git merge 分支提交保持构建失败的测试