Jenkins:如何使上游作业触发下游作业的文件系统轮询

时间:2013-03-07 13:39:56

标签: jenkins jenkins-plugins

我正在使用詹金斯建立两个工作岗位(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分钟,直到复制完成,然后开始构建。

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

此致 -Safi

2 个答案:

答案 0 :(得分:1)

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

./ myscript.sh -f file_to_poll -m minutes_to_poll_for

上面的一行会成功或失败返回

./ start_build

答案 1 :(得分:0)

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

编写一个shell或批处理脚本,将F与之前的状态进行比较(将状态保存为副本或时间戳),如果发现更改,则触发作业B.

我希望这会有所帮助。