jenkis +sonarqube 对后端代码静态扫描,钉钉群通知执行结果(记录)
代码提交,触发后端sonar测试,测试完成,jenkins触发依赖任务,执行python脚本,达到预期,调用上线任务模块,进行上线,达不到预期,钉钉群通知。
牵涉到配置:
1.配置sonar测试任务
https://www.cnblogs.com/leiziv5/p/9863211.html 参考
2,对配置测试任务进行调试,
构建失败触发邮件通知
2,配置一个新任务,执行python脚本
python脚本如下
'''
@author: lileilei
@file: sonar.py
@time: 2018/12/6 9:52
'''
import requests,json,jenkins
def sendding(Dingtalk_access_token,content,title):
url = Dingtalk_access_token
pagrem = {
"msgtype": "link",
"link": {
'title':title,
"text": content,
'messageUrl':'http://localhost:9000/dashboard?id=testmvndemo'
},
"isAtAll": True
}
headers = {
'Content-Type': 'application/json'
}
requests.post(url, data=json.dumps(pagrem), headers=headers)
yanzhongbiaozhun=0
def huitui():
huiguntongzhi='回退机器人url'
url = 'http://localhost:9000/api/issues/search?componentKeys=testmvndemo&s=FILE_LINE&resolved=false&types=BUG&ps=100&facets=severities%2Ctypes&additionalFields=_all'
resopnse = requests.get(url).text
result = json.loads(resopnse)
zhuyao=0
yanzhong=0
code_reslut=[]
for item in result['issues']:
if item['severity']=='MAJOR':
zhuyao+=1
code_reslut.append({'文件':item['component'],"异常信息":item['message']})
elif item['severity']=='CRITICAL':
yanzhong+=1
code_reslut.append({'文件': item['component'], "异常信息": item['message']})
else:
pass
if yanzhong>=yanzhongbiaozhun:
sendresuly={'严重bug':yanzhong,'主要bug':zhuyao,"结果概览":code_reslut}
sendding(huiguntongzhi,content=sendresuly,title="回滚通知")
else:
conde=jenkins.Jenkins(url="http://localhost:8080",username='liwanlei',password="liwanlei")
conde.build_job("后端上线")
def xinxitongji():
dingdingurl='钉钉url'
url='http://localhost:9000/api/measures/search?projectKeys=testmvndemo&metricKeys=alert_status%2Cbugs%2Creliability_rating%2Cvulnerabilities%2Csecurity_rating%2Ccode_smells%2Csqale_rating%2Cduplicated_lines_density%2Ccoverage%2Cncloc%2Cncloc_language_distribution'
resopnse = requests.get(url).text
result = json.loads(resopnse)
bug=0
code=0
fugai=0
chongf=0
for item in result['measures']:
if item['metric']=="bugs":
bug=item['value']
elif item['metric']=='code_smells':
code=item['value']
elif item['metric']=='coverage':
fugai=item['value']
elif item['metric']==['duplicated_lines_density']:
chongf=item['value']
else:
pass
code_reslut={'bug数量':bug,"可能存在问题代码":code,"覆盖率":fugai,"重复代码":chongf}
sendding(dingdingurl, content=code_reslut, title="代码覆盖率统计")
if __name__=="__main__":
huitui()
xinxitongji()
选择:Build after other projects are built,选择依赖的项目,稳定后调用
构建:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python sonar.py
如果达到预期,脚本会自动调用第三个任务
代码调试过程,小心坑。
结果

钉钉通知:

初步设想成功。
jenkis +sonarqube 对后端代码静态扫描,钉钉群通知执行结果(记录)的更多相关文章
- 代码静态扫描工具sonar
一.SonarQube整体介绍 SonarQube为静态代码检查工具,采用B/S架构,帮助检查代码缺陷,改善代码质量,提高开发速度,通过插件形式,可以支持Java.C.C++.JavaScripe等等 ...
- SonarQube部署及代码质量扫描入门教程
一.前言 1.本文主要内容 CentOS7下SonarQube部署 Maven扫描Java项目并将扫描结果提交到SonarQube Server SonarQube扫描报表介绍 2.环境信息 工具/环 ...
- 利用 SonarScanner 静态扫描 Rainbond 上的 Maven 项目
对代码进行静态扫描是一种非常常见的代码质量保证手段,这种扫描不仅仅可以检查到代码中的缺陷,应用各种业界最佳实践,也可以检查出安全方面的漏洞,给予项目代码全方位的提升.在各种代码扫描方案之中,Sonar ...
- 使用Jenkins结合Gogs和SonarQube对项目代码进行测试、部署、回滚,以及使用keepalived+haproxy调度至后端tomcat
0 环境说明 主tomcat:192.168.0.112 备tomcat:192.168.0.183 haproxy+keepalived-1:192.168.0.156 haproxy+keepal ...
- DevOps之持续集成SonarQube代码质量扫描
一.SonarQube介绍 SonarQube是一个用于代码质量检测管理的开放平台,可以集成不同的检测工具,代码分析工具,以及持续集成工具.SonarQube 并不是简单地把不同的代码检查 ...
- sonarQube安装及本机扫描C#项目
因项目需要,需要使用sonarQube对代码进行扫描并查看,因对sonarQube不熟悉,所以先在本机搭建测试环境. 参考了张老师的博客:http://www.cnblogs.com/danzhang ...
- 阿里钉钉技术分享:企业级IM王者——钉钉在后端架构上的过人之处
本文引用了唐小智发表于InfoQ公众号上的“钉钉企业级IM存储架构创新之道”一文的部分内容,收录时有改动,感谢原作者的无私分享. 1.引言 业界的 IM 产品在功能上同质化较高,而企业级的 IM 产品 ...
- Jenkins之自动部署、代码安全扫描、自动化接口测试
搭建Jenkins wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reporpm --i ...
- [Java 开源项目]一款无需写任何代码,即可一键生成前后端代码的工具
作者:HelloGitHub-小鱼干 JeecgBoot 是一款基于代码生成器的低代码开发平台,零代码开发.JeecgBoot 采用开发模式:Online Coding 模式-> 代码生成器模式 ...
随机推荐
- 【转】Linux下从TCP状态机,三次握手判断DDOS攻击
从TCP状态机判断DDOS攻击 一.TCP协议 TCP 协议是传送层的核心协议,提供了可靠面向连接的协议,分为三次握手和四次断开,在这个过程中TCP有个状态机,记录不同阶段的状态. 二. TCP握手和 ...
- 自己动手制作一个本地的yum仓库
制作本地yum源有两种方式,第一种是使用光盘镜像,然后在本地进行安装.第二种是我们自己创建一个本地yum仓库,然后使用file的形式来向本地提供yum repo(也可以使用http的方式向外部提供,我 ...
- T4学习- 1、简介
一.T4简介 T4(Text Template Transformation Toolkit)在 Visual Studio 中,"T4 文本模板"是由一些文本块和控制 ...
- The Rock Game
Before the cows head home for rest and recreation, Farmer John wantsthem to get some intellectual st ...
- [POI2007]MEG-Megalopolis
传送门:嘟嘟嘟 第一反应是树链剖分,但是太长懒得写,然后就想出了一个很不错的做法. 想一下,如果我们改一条边,那么影响的只有他的子树,只要先搞一个dfs序,为什么搞出这个呢?因为有一个性质:一个节点的 ...
- 服务器 三 MQTT服务器手机开发
目的: 实现手机4G网络控制单片机,需要搭建服务器,手机或者各种控制端远程控制. 本教程 1 MQTT服务器硬件模块 2 MQTT服务器电脑搭建 2.1自己搭建 2.2租阿里云服务器 2 MQTT服 ...
- Mac svn使用学习-3-客户端调用服务端简单例子
既然在前一篇内容中我们已经讲svn服务器搭建好了,那么接下来我们试着试着简单使用一个该服务器 1.从本地导入代码到服务器上 userdeMBP:~ user$ svn import /Users/us ...
- 垃圾回收相关(深入理解Java虚拟机中的内容)
程序计数器.虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收.垃圾回收主要是针对 Java 堆和方法区进行. 判断一个对 ...
- OpenCV——视频操作基础
读入视频: VideoCapture 类 //方法一 VideoCapture capture; capture.open("test.avi"); //方法二 VideoCapt ...
- Python2.7-netrc
netrc 模块,用于解析和封装 netrc 类型的文件,这种类型的文件用于 unix 的 ftp 程序和其他 ftp 客户端.----------------不知道到底是个什么东西 1.模块对象 1 ...