【问题标题】:How to grab a particular log file and show its content in jenkins Console output如何获取特定日志文件并在 jenkins 控制台输出中显示其内容
【发布时间】:2015-12-25 21:14:55
【问题描述】:

我有以下 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 命令永不停止。

有没有办法执行我的构建后脚本(它只在远程服务器上启动我的 Web 应用程序)并在 2 分钟内抓取 .../logs/current 日志文件,或者直到该日志出现“Web app MyApplication 已启动”。

我想直接在 Jenkins 的 控制台输出 中查看 .../logs/current 日志文件的内容,并在 2 分钟后杀死 tail -f

【问题讨论】:

    标签: java linux logging jenkins


    【解决方案1】:

    tail -f 在被中断之前不会结束,因此您的脚本永远不会完成运行。

    你可以做的是在你的日志上使用grep -q,当它找到它的模式时,它将以0退出状态退出:

    grep -q 'Web app MyApplication has been Started' <(tail -f /opt/services/my_service/logs/current)
    

    【讨论】:

    • 太棒了。我可以将此命令的执行时间限制为 2 分钟吗?如果部署出错,“Web 应用程序 MyApplication 已启动”永远不会出现在控制台中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多