0

我正在使用 jenkins 构建两个工作(A 和 B)。我想在作业 A 更新某个文件 F 时触发作业 B。在作业 A 完成大约 10 分钟后更新 F(复制服务将文件复制到作业 B 所在的远程服务器需要 10 分钟将执行)

所以 B 是 A 的下游工作,但我不能在 A 完成后立即触发 B,因为到那时 F 不会在 B 执行的服务器上更新。我目前在 B 中使用 FS 触发器插件每分钟检查一次 F,这似乎运作良好。但这只是 24 小时一直检查 F 的开销。相反,我希望 B 在作业 A 完成后开始轮询文件 F 的文件系统,因此它将轮询大约 10 分钟,直到复制完成,然后开始构建。

有谁知道如何在詹金斯完成这样的事情?简单来说,如何让上游作业触发文件系统轮询下游作业?

问候,-萨菲

4

2 回答 2

1

谢谢你们的回答。我最终编写了自己的 bash 脚本并在作业 B 的第一行中调用它。该脚本可以轮询文件 F 的 M 分钟,然后如果该文件以 SUCCESS 退出状态退出(这会导致詹金斯继续构建)如果在 M 分钟内找不到文件(这会导致 jenkins 退出构建),则找到或退出并出现错误。所以像这样的东西在我的詹金斯工作B中: -

./myscript.sh -f file_to_poll -m minutes_to_poll_for

上面的行将返回成功或失败

./start_build

于 2013-03-08T15:23:49.890 回答
0

我建议您使用作业 B 中的ScriptTrigger来通过脚本监视文件 F。您可以每 5 分钟左右轮询一次。

编写一个 shell 或批处理脚本,将 F 与其先前的状态进行比较(将状态保留为副本或时间戳)并在发现更改时触发作业 B。

我希望这有帮助。

于 2013-03-07T14:13:34.597 回答