当前位置:   article > 正文

jenkins通过shell将jar包启动日志输出在控制台_jenkins控制台输出时附带jar启动日志

jenkins控制台输出时附带jar启动日志

目的,通过控制台输出java的jar启动日志,查看服务是否成功启动。并通过脚本来调节,避免日志一直打印不退出,导致jenkins job hang住。

 

 

于是在jenkins启动的时候加了构建后shell 脚本 启动顺序如下

1 启动第一个杀死tail命令的脚本kill_tailf.sh,匹配到日志出现Started App in 或者JVM running 成功退出  或者日志打印时间超过46秒失败退出

2 启动tail 的脚本tailf。sh

脚本如下 我这里因为部署环境不一样所以 传入了参数。自己用的话可以写死。就不需要传入参数了

这个execute.log是项目的日志名称

boole_log和boole_jvm_log是会生成的

 

kill_tailf.sh

#!/bin/sh

# @Time    : 2019-10-24

# @Author  : jiaminxu

# @Name  :kill_tailf.sh

# @Description  :  用于检测 日志里是否包含Started .* second 判断项目是否成功启动 配合tailf.sh一起使用

 

 

#项目日志文件 execute.log

des_log=$1/execute.log

echo "项目日志为:$des_log"

 

second=0

 

echo "" > $1/bin/boole_log

echo "" > $1/bin/boole_jvm_log

 

 

while true

do

 

    sum=`cat ${des_log} |grep 'Started App in' |wc -l`

    sum_jvm=`cat ${des_log} |grep 'JVM running for' |wc -l`

    echo "[tags] sum: ${sum} second: $second sum_jvm: $sum_jvm"

    echo "${sum}" >$1/bin/boole_log

    echo "${sum_jvm}" >$1/bin/boole_jvm_log

 

    if [ ${second} -ge 46  ];then

       echo 部署等待时间过长 退出部署

       ps -ef |grep "tailf ${des_log}" |grep -v grep|awk '{print $2}' |xargs kill

       break

    fi

 

      

    if [ ${sum} -gt 0 ] || [ ${sum_jvm} -gt 0  ];then

       echo "[tags] sum ${sum} "

        ps -ef |grep "tailf ${des_log}" |grep -v grep|awk '{print $2}' |xargs kill

        echo [tags] 项目启动花费 $second 秒   

        break

    fi

    second=$((second + 2))

    sleep 2

    echo [tags] 启动时长second $second

 

done

 

tailf.sh

#!/bin/sh

# @Time    : 2019-10-24

# @Author  : jiaminxu

# @Name  :tailf.sh

# @Description  : 判断此次部署是否成功 并打印java日志

 

 

# $1为job文件夹部署的位置

# 后台执行杀死

sh $1/bin/kill_tailf.sh  $1 &

 

# 执行tailf 查看日志

echo "执行shell命令: tailf $1/execute.log"

tailf $1/execute.log

 

echo [tags] tailf 命令已经成功退出

# 判断是否捕获到 Started .* second

sum=`cat $1/bin/boole_log`

sum_jvm=`cat $1/bin/boole_jvm_log`

 

if [ $sum -gt 0 ];then

       echo [tags] ------------

       echo [tags] 本次部署成功

       echo [tags] ------------

elif [ $sum_jvm -gt 0 ];then

       echo [tags] ------------

       echo [tags] 本次部署成功

       echo [tags] ------------

else

       echo [tags] ------------

       echo [tags] 本次部署失败

       echo [tags] ------------

 

fi

 

 

 

效果如下 对以上的脚本稍作改动.判断了是否是生产的网关

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/216862
推荐阅读
相关标签
  

闽ICP备14008679号