2013-03-07 74 views
0

我正在使用jenkins构建两个作业(A和B)。 当作业A更新某个文件F时,我想触发作业B. 作业A完成约10分钟后F会更新(复制服务需要10分钟才能将文件复制到作业的远程服务器B即将执行)Jenkins:如何使上游作业触发下游作业的文件系统轮询

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

有没有人知道如何在詹金斯完成这样的事情?简而言之,如何使上游作业触发下游作业的文件系统轮询?

问候, -Safi

+0

您是否也意识到您可以为构建设置安静时间,例如在作业B上设置10分钟。这意味着作为下游项目触发的作业B将在实际开始构建之前等待10分钟。 – 2013-03-07 18:02:43

回答

0

我建议你使用ScriptTrigger在作业B以监测脚本文件F。你可以每5分钟左右轮询一次。

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

我希望这会有所帮助。

1

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

./myscript.sh -f file_to_poll -m minutes_to_poll_for

线之上要么成功或失败时返回

./start_build

相关问题