根据SonarQube官方描述,SonarQube由三个组件组成:

SonarQube Server,运行如下进程:

  • 一个服务于SonarQube用户界面的web服务器
  • 基于Elasticsearch的搜索服务器
  • 负责处理代码分析报告并将其保存在SonarQube数据库中的计算引擎

Database Server,主要存储如下内容:

  • 在代码扫描期间生成的代码质量和安全性的度量和问题
  • SonarQube实例配置

Scanner:

  • 扫描器,用以分析项目

SonarQube Web API没有提供分析代码的接口,因为分析代码是scanner的职责,因此,我们要在出包前自动执行sonarqube,思路就是先要执行sonarqube scanner,然后再通过接口获取执行报告。

def executed = false
project.publish.doFirst {if (!executed && "csf-parent" == project.name) {// 标记为已执行,避免重复执行executed = true// 执行sonarqubeexec {workingDir "${rootDir}"commandLine "gradle.bat", "sonarqube"}// 获取gradle.properties配置参数def properties = project.getProperties()def projectKey = properties.get("systemProp.sonar.projectKey")def hostUrl = properties.get("systemProp.sonar.host.url")def login = properties.get("systemProp.sonar.login") + ":"def token = login.getBytes(StandardCharsets.UTF_8).encodeBase64Url(true).toString()// 获取sonarqube执行结果def connection = new URL(hostUrl + "/api/qualitygates/project_status?projectKey=" + projectKey).openConnection()connection.setRequestMethod("GET")connection.setDoOutput(true)connection.setRequestProperty("Content-Type", "application/json")connection.setRequestProperty("Authorization", "Basic " + token)def code = connection.getResponseCode()if (code != 200) {throw new GradleException("获取sonarqube结果失败!")}def text = connection.getInputStream().getText()def slurper = new groovy.json.JsonSlurper()def json = slurper.parseText(text)def status = json.projectStatus.statusif ("ERROR".equalsIgnoreCase(status)) {throw new GradleException("sonarqube检测不通过!")}}}

publish前自动执行sonarqube相关推荐

  1. 区块链大咖谈之蔡维德:法律的自动执行将颠覆法学研究、法律制度和法律实践...

    [编者Peter Ye按] 欢迎大家参加2018年12月12日下午的中国存储与数据峰会<区块链的技术与应用论坛>.我已经邀请到蔡维德.于佳宁.王立仁.洪蜀宁.易欢欢.孙海波.董天一等大咖进 ...

  2. python运维脚本部署jdk_Jenkins自动执行Python脚本,并输出测试报告

    这段时间,在家时间自由(除了睡觉8小时,其他时间都在工作和学习),有大把的时间实操练习一些硬技能: 今天,更新一篇利用Jenkins这套框架,调用Python自动化脚本,并输出测试报告的手把手实操文章 ...

  3. 开关机自动执行脚本方法[以及切换用户执行命令方法]

    [开关机自动执行脚本方法] 摸索了两天,终于找找们到了: 首先要明确的一点是:unix(含linux)的OS有若干个运行级别: 参见1:http://xiaoli.itpub.net/post/398 ...

  4. Navicat使用教程:使用Navicat Premium 12自动执行数据库复制(四)

    下载Navicat Premium最新版本 Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL.Oracle及PostgreSQL数据库,让管理不 ...

  5. 如何在构建docker镜像时执行SonarQube扫描.NET Core应用

    前言 SonarQube是一款静态代码质量分析工具,它常用于检测代码中的Bug.漏洞和代码异味,并且能够集成在IDE.Jenkins.Git等服务中,方便随时查看代码质量分析报告. 一般情况下,我们在 ...

  6. windows制作定时关机脚本_自动关机、自动打开程序… 让Windows自动执行任何操作...

    文章转载于网络,侵删 Windows 中有一个非常棒的功能,叫做"任务计划程序",但是因为它的界面看起来有点复杂,导致很少有人使用它. 其实对于任何人而言,"任务计划程序 ...

  7. node.js require 自动执行脚本 并生成html,nodejs 执行脚本并实时输出

    接到需求 需要一个服务来执行shell脚本,要求可以实时打印shell脚本执行的过程,并看到脚本执行的结果. 明确任务目标: 这是一个web服务,需要执行shell脚本 当一个脚本执行的时候,再次发送 ...

  8. linux php自动执行_linux下实现定时执行php脚本

    在linux中输入命令 复制代码 代码如下: crontab -e 然后使用vim的命令编辑打开的文件,输入 复制代码 代码如下: 0 * * * * /usr/bin/php -f /home/us ...

  9. jenkins 手动执行_想知道如何用Jenkins自动执行Python脚本输出测试报告?

    前言在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作.借助Jenkins,我们可以结合 Git/SVN 自动拉取代码 ...

最新文章

  1. QIIME 2用户文档. 14机器学习预测样品元数据分类和回归q2-sample-classifier(2018.11)
  2. TensorFlow迁移学习的识别花试验
  3. LINQ 学习路程 -- 查询语法 LINQ Query Syntax
  4. 180°舵机的使用步骤
  5. 计算机组成原理——总线系统总结
  6. EAST算法超详细源码解析:数据预处理与标签生成
  7. 微信公众平台服务框架
  8. ben we_惊!WE辅助选手Ben离开WE,大舅子还能再有这么默契的辅助吗?
  9. php下载地址转换工具,php把url转换迅雷thunder资源下载地址的简单示例
  10. 深度学习笔记_卷积神经网络参数计算
  11. 使用Redis计数器防止并发请求
  12. 基于vue2.0与追书神器api的小说阅读webapp
  13. 学习笔记1/5,操作系统之操作系统概念
  14. echarts中国地图
  15. 远程主机强迫关闭了一个现有的连接.
  16. java求三角形周长 面积_计算三角形的周长和面积 java
  17. windows的域和域林间的信任是如何工作的
  18. fiftyone安装使用亲测
  19. 【Vue3】图标处理方案SvgIcon
  20. p值>0.05,统计意义上不显著?

热门文章

  1. ArcGIS license server administrator无法启动问题
  2. 关闭搜狗浏览器的托盘图标
  3. 感谢飞书放过幕布!GPT-4平替Poe;100个GPT-4实战案例;AI绘画新手指南之SD篇;new Bing靠谱教程;AI生成视频摘要神器 | ShowMeAI日报
  4. echarts地图罗平县的json_Echarts 加载省地图json
  5. Learning Alteryx-PDF下载
  6. SHARC音频DSP的算法详解(一)数字信号里的定点数和浮点数
  7. 物联网卡设置_为什么手机上使用物联网卡的要设置APN
  8. x86_64与ARM64的signaling NaN与Quiet NaN,以及浮点数的舍入模式
  9. 手撕代码HAttMatting(3):dataset
  10. css 霓虹灯转动效果,CSS3 文本霓虹灯闪烁特效