前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jenkins+Gogs(git仓库)系列13:番外篇--增加jar包启动监控日志,Python脚本

Jenkins+Gogs(git仓库)系列13:番外篇--增加jar包启动监控日志,Python脚本

作者头像
MyJie
发布2019-11-20 14:58:01
5280
发布2019-11-20 14:58:01
举报
文章被收录于专栏:MyJie的个人日记MyJie的个人日记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/yangj507/article/details/103101947

1、起因:

在公司Jenkins也用了小半年,遇到一个情况,jar包项目构建成功了,也发了钉钉消息,但实际上,项目没有启动成功。

也就是:构建成功,不等于服务启动成功

2、过程:

自己使用的python编程语言,为了结合后面的接口测试脚本,需要判断服务是否启动成功,启动成功则执行测试脚本,反之不执行

3、使用工具:

Python3.x 简单集成到Jenkins job 构建后的操作步骤中

4、代码很简单,有优化的地方还请指,我可以继续优化

代码语言:javascript
复制
# -*- coding:UTF-8 -*-
# /usr/bin/python3


import subprocess
import sys


def monitor_log(log_file):
    po_pen = subprocess.Popen('tail -f ' + log_file,
                              stdout=subprocess.PIPE,
                              stderr=subprocess.PIPE,
                              shell=True,
                              encoding='UTF-8')
    pid = po_pen.pid
    print('po_pen.pid:' + str(pid))
    while True:
        line = po_pen.stdout.readline().strip()
        # 判断内容是否为空
        if line:
            print(line)
            if 'Started' in line and 'seconds (JVM running for' in line:
                print('启动成功')
                sys.exit(0)
            elif 'Exception' in line[:50]:
                print('启动失败,有报错')
                sys.exit(1)


if __name__ == '__main__':
    monitor_log(sys.argv[1])

5、集成方式

在构建后操作,SSH Publishers 中直接添加执行脚本,注意脚本是放在目标服务器指定目录的

python3 3.x运行环境

中间的是py脚本的绝对路径

最后是需要监控的日志绝对路径

6、原理过程【重要】

首先咱们看看代码,因为是监控log,就不能用普通的open方式打开文件,log肯定会特别的大

这里使用的subprocess模块进行的操作

然后判断每一行的字段内容(代码中的判断字符串还需要优化,特别是启动失败的判断)

在和Jenkins集成时,一个关键的问题,如何让Jenkins捕获到py脚本中的成功和失败,在查阅了很多资料后终于知道了

(菜是原罪·楼主)

Jenkins如何判断成功还是失败

然后看看平常我们执行python程序最后都会输出一段内容,code 0 代码程序正常退出

最后,我们看看sys这个模块的某功能,最关键的地方在这里,如果我代码里面判断启动成功,我就sys.exit(0) 反之 1

最最后,在Jenkins上进行实践

成功的状态:

失败的状态

配合钉钉群通知

最终完美解决 启动日志监控

代码语言:javascript
复制
sys.argv  大家可以研究下,卖个关子

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=klkypps11wnj

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档