我有以下Jenkins后构建shell脚本:
ssh user@my_server <<EOF
service my_service stop
service my_service start
tail -f /opt/services/my_service/logs/current
exit
EOF
这个脚本重新启动远程主机(my_server)上的 my_service。
问题在于:命令 service my_service start 只是向 RUNIT 发出运行 my_service 的请求,即 service my_service start 执行后立即返回。
但是 service my_service start 运行一个 SpringBoot Java Web 应用程序,将所有日志信息写入 .../logs/current 日志文件中。为了捕获此日志信息,我添加了命令 tail -f /opt/services/my_service/logs/current,但在这种情况下,Jenkins 构建永远不会结束,因为 tail -f 命令永远不会停止。
有没有一种方法可以执行我的 post-build 脚本(仅在远程服务器上启动我的 Web 应用程序),并在 2 分钟内或直到此日志具有 "Web 应用程序 MyApplication 已启动" 行时抓取 .../logs/current 日志文件。
我想在 Jenkins 的 控制台输出 中看到 .../logs/current 日志文件的内容,并在 2 分钟后终止 tail -f。