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 模式-> 代码生成器模式 ...
随机推荐
- Sqlserver数据库中,跨权限执行语句
问题来源:最近有同事需要执行批量删除语句.根据他提供的业务需求,推荐他使用“TRUNCATE TABLE”语句.但使用该语句需要 ALTER权限,这与执行用户的角色不符. 解决办法:使用EXECUTE ...
- VS2010/2013 运行是很卡的加速方案
前段时间为了一个项目而把VS2008换成了VS2010,结果原本就不堪重负的本本跑起VS2010来那更是慢得没话说,于是看了遍VS2010选项,又从网上到处找资料找优化方法,总算使我的VS2010跑得 ...
- WebBrowser实现:自动填充网页上的用户名和密码并点击登录按钮
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { ...
- Linux内核同步机制之completion【转】
Linux内核同步机制之completion 内核编程中常见的一种模式是,在当前线程之外初始化某个活动,然后等待该活动的结束.这个活动可能是,创建一个新的内核线程或者新的用户空间进程.对一个已有进程的 ...
- SQLite简单使用记录
SQLite,一种轻量级的数据库 想要使用的话首先下载安装包. https://www.sqlite.org/download.html 下载sqlite-netFx20-setup-bundle-x ...
- Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid
Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid 上一步获取QQ登录网址之后,测试登录之后本该跳转到这个界面 但是报错了: 新建oauth_callback.html & ...
- python第三十八课——面向对象(一)
1.面向对象:(思想) 面向:看.关注.瞅 对象:个体.实体.实例.结果单词:object在python中一些皆对象 面向过程:(思想) 面向:看.关注.瞅 过程:经过.经历.从头到尾 使用一些生活中 ...
- Python3.6使用Pyqt5编写GUI程序
Python3.6使用Pyqt5编写HTTP测试工具 程序非常简单,使用PYQT5搭建好UI,然后用PyUIC生成Python文件,Mac中使用Pycharm+Python3.6+Pyqt5搭建教程在 ...
- Python2.7-xdrlib
xdrlib模块,用于打包和解包 xdr 数据.XDR 提供了一种与体系结构无关的表示数据,解决了数据字节排序的差异.数据字节大小.数据表示和数据对准的方式.使用XDR的应用程序,可以在异构硬件系统上 ...
- tomcat-在cmd窗口启动Tomcat
平时,一般使用tomcat/bin/startup.bat目录在windows环境启动Tomcat,或者使用IDE配置后启动. 下面来简单介绍下如果在cmd窗口直接输入命令启动Tomcat: 1.将t ...