【问题标题】:Jenkins: how to make an upstream job trigger the file system polling on a downstream jobJenkins:如何使上游作业触发下游作业的文件系统轮询
【发布时间】:2013-03-07 13:39:55
【问题描述】:

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

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

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

问候, -萨菲

【问题讨论】:

  • 您是否也知道您可以为构建设置安静时间,例如在作业 B 上设置 10 分钟。这意味着作业 B 当作为下游项目触发时,将等待 10 分钟才能真正开始建设。

标签: jenkins jenkins-plugins


【解决方案1】:

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

./myscript.sh -f file_to_poll -m minutes_to_poll_for

上面的行要么返回成功要么失败

./start_build

【讨论】:

    【解决方案2】:

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

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

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-04-06
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 2020-09-08
      • 1970-01-01
      相关资源
      最近更新 更多