根据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. idea resources目录_最全八种IDEA目录类型标注:Mark Dir as Sources/Resources Root
  2. Cordova入门系列(一)创建项目
  3. 【转载】为何要十跪父母
  4. JETSON NANO 查看 CUDA 版本:NVCC -V 报错:BASH: NVCC: 未找到命令
  5. 数据库监听。数据库一次notify,Activity多次接收
  6. 网络安全比赛理论答题(五)
  7. lambda 和 std::function
  8. java对List的优雅排序
  9. php过滤文件中的空行,如何从PHP文本中删除空行?
  10. 关于VS编译的程序内存分配只能用1.5~2G上限的优化方案
  11. lopatkin俄大神精简中文系统Windows 10 Pro 19041.21 20H1 Release x86-x64 ZH-CN SMS
  12. 在多媒体计算机系统中图像的颜色是,图像量化位数越大,记录图像中每个像素点的颜色种类就越多。() - 试题答案网问答...
  13. 编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。
  14. 72个嵌入式技术网站
  15. 看得见的数据结构Android版之开篇前言
  16. ice 的 Nonmutating 和 Idempotent
  17. Poly2Tri介绍
  18. 复数fft的时间复杂度,如何复数捕获阶段,振幅和频率的FFT的结果?
  19. Web安全常见漏洞原理、危害及其修复建议
  20. layer弹框,弹出后自动关闭

热门文章

  1. 一半以上的年轻人存款不足10万元,能带给我们什么思考?
  2. iOS微信8.0.10版本唤醒隐藏功能,还有这几个变化
  3. 百战RHCE(第七战:Linux进阶命令5-sudo提权极简管理)
  4. C#,21根火柴棍问题(21 Matchticks Problem)的算法与源代码
  5. 键盘上的箭头键失灵怎么修复_如何在Excel中修复箭头键滚动
  6. C# Winform 中如何获取本机安装输入法,并设置为默认输出语言,如何打开搜狗输入法和手写板...
  7. [CVPR2021-best]GIRAFFE: Representing Scenes as Compositional Generative Neural Feature Fields
  8. 2020年金融银行行业网络信息安全、信息泄漏事件汇总
  9. 转载:统计学读物推荐
  10. 今生也是第一次开播详细讲解,有多少料全包了