代码提交,触发后端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 对后端代码静态扫描,钉钉群通知执行结果(记录)的更多相关文章

  1. 代码静态扫描工具sonar

    一.SonarQube整体介绍 SonarQube为静态代码检查工具,采用B/S架构,帮助检查代码缺陷,改善代码质量,提高开发速度,通过插件形式,可以支持Java.C.C++.JavaScripe等等 ...

  2. SonarQube部署及代码质量扫描入门教程

    一.前言 1.本文主要内容 CentOS7下SonarQube部署 Maven扫描Java项目并将扫描结果提交到SonarQube Server SonarQube扫描报表介绍 2.环境信息 工具/环 ...

  3. 利用 SonarScanner 静态扫描 Rainbond 上的 Maven 项目

    对代码进行静态扫描是一种非常常见的代码质量保证手段,这种扫描不仅仅可以检查到代码中的缺陷,应用各种业界最佳实践,也可以检查出安全方面的漏洞,给予项目代码全方位的提升.在各种代码扫描方案之中,Sonar ...

  4. 使用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 ...

  5. DevOps之持续集成SonarQube代码质量扫描

    一.SonarQube介绍       SonarQube是一个用于代码质量检测管理的开放平台,可以集成不同的检测工具,代码分析工具,以及持续集成工具.SonarQube 并不是简单地把不同的代码检查 ...

  6. sonarQube安装及本机扫描C#项目

    因项目需要,需要使用sonarQube对代码进行扫描并查看,因对sonarQube不熟悉,所以先在本机搭建测试环境. 参考了张老师的博客:http://www.cnblogs.com/danzhang ...

  7. 阿里钉钉技术分享:企业级IM王者——钉钉在后端架构上的过人之处

    本文引用了唐小智发表于InfoQ公众号上的“钉钉企业级IM存储架构创新之道”一文的部分内容,收录时有改动,感谢原作者的无私分享. 1.引言 业界的 IM 产品在功能上同质化较高,而企业级的 IM 产品 ...

  8. Jenkins之自动部署、代码安全扫描、自动化接口测试

    搭建Jenkins wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reporpm --i ...

  9. [Java 开源项目]一款无需写任何代码,即可一键生成前后端代码的工具

    作者:HelloGitHub-小鱼干 JeecgBoot 是一款基于代码生成器的低代码开发平台,零代码开发.JeecgBoot 采用开发模式:Online Coding 模式-> 代码生成器模式 ...

随机推荐

  1. Visual Studio 2010详细安装过程

    Visual Studio 2010在目前看来,应该是使用得比较多的一款微软的软件开发工具集合了,因为它具有以下优点:(1)启动速度快:在相同环境下,相比于Visual Studio 2015来说,2 ...

  2. springMvc之文件上传与下载

    我们经常会使用的一个功能是文件下载,既然有文件下载就会有文件上传,下面我们来看一下文件上传是如何实现的 首先准备好一个页面 <style type="text/css"> ...

  3. easyui中日期格式化

    <body>    <div id="list"></div>     <script type="text/javascrip ...

  4. Win7命令终端基础配色指南

    微软对控制台字体的元数据有严格的限制,https://support.microsoft.com/zh-cn/help/247815/necessary-criteria-for-fonts-to-b ...

  5. jquery ajax 设置请求头header 参数

    $.ajax( { url:'http://127.0.0.1:30080/api-a/quasiCustom/selectCustomList', type:'post', dateType:'js ...

  6. 【Android自动化】编写一个log模块,输出至控制台,供程序运行查看

    # -*- coding:utf-8 -*- import logging def get_log(name): log = logging.getLogger(name) log.setLevel( ...

  7. spa(单页面应用)的优缺点[转]

    优点:spa(单页面应用)1.用户体验好.快,内容的改变不需要重新加载整个页面,避免了不必要的跳转和重复渲染.2.基于上面一点,SPA相对对服务器压力小.缺点:1: seo 不利于搜索引擎优化2: 初 ...

  8. CentOS 7的安装

    一.引导系统之后 界面说明: Install CentOS 7 安装CentOS 7 Test this media & install CentOS  7 测试安装文件并安装CentOS  ...

  9. javascript仿新浪微博图片放大缩小及旋转效果

    javascript仿新浪微博图片放大缩小及旋转效果 经常看到新浪微博里有图片放大缩小旋转效果,感觉效果还不错,所以就想试着做一个类似的demo出来,至于旋转对于IE可以用滤镜来解决,标准的浏览器可以 ...

  10. JAVA框架 Spring 事务

    一.我们之前在hibernate的时候,需要直接写事务,需要绑定当前线程保证获取同一个连接,虽然hibernate的帮我们封装绑定当前现成的操作,但是需要我们手动的去开启和关闭事务. 而spring帮 ...