publish前自动执行sonarqube
根据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相关推荐
- 区块链大咖谈之蔡维德:法律的自动执行将颠覆法学研究、法律制度和法律实践...
[编者Peter Ye按] 欢迎大家参加2018年12月12日下午的中国存储与数据峰会<区块链的技术与应用论坛>.我已经邀请到蔡维德.于佳宁.王立仁.洪蜀宁.易欢欢.孙海波.董天一等大咖进 ...
- python运维脚本部署jdk_Jenkins自动执行Python脚本,并输出测试报告
这段时间,在家时间自由(除了睡觉8小时,其他时间都在工作和学习),有大把的时间实操练习一些硬技能: 今天,更新一篇利用Jenkins这套框架,调用Python自动化脚本,并输出测试报告的手把手实操文章 ...
- 开关机自动执行脚本方法[以及切换用户执行命令方法]
[开关机自动执行脚本方法] 摸索了两天,终于找找们到了: 首先要明确的一点是:unix(含linux)的OS有若干个运行级别: 参见1:http://xiaoli.itpub.net/post/398 ...
- Navicat使用教程:使用Navicat Premium 12自动执行数据库复制(四)
下载Navicat Premium最新版本 Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL.Oracle及PostgreSQL数据库,让管理不 ...
- 如何在构建docker镜像时执行SonarQube扫描.NET Core应用
前言 SonarQube是一款静态代码质量分析工具,它常用于检测代码中的Bug.漏洞和代码异味,并且能够集成在IDE.Jenkins.Git等服务中,方便随时查看代码质量分析报告. 一般情况下,我们在 ...
- windows制作定时关机脚本_自动关机、自动打开程序… 让Windows自动执行任何操作...
文章转载于网络,侵删 Windows 中有一个非常棒的功能,叫做"任务计划程序",但是因为它的界面看起来有点复杂,导致很少有人使用它. 其实对于任何人而言,"任务计划程序 ...
- node.js require 自动执行脚本 并生成html,nodejs 执行脚本并实时输出
接到需求 需要一个服务来执行shell脚本,要求可以实时打印shell脚本执行的过程,并看到脚本执行的结果. 明确任务目标: 这是一个web服务,需要执行shell脚本 当一个脚本执行的时候,再次发送 ...
- linux php自动执行_linux下实现定时执行php脚本
在linux中输入命令 复制代码 代码如下: crontab -e 然后使用vim的命令编辑打开的文件,输入 复制代码 代码如下: 0 * * * * /usr/bin/php -f /home/us ...
- jenkins 手动执行_想知道如何用Jenkins自动执行Python脚本输出测试报告?
前言在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作.借助Jenkins,我们可以结合 Git/SVN 自动拉取代码 ...
最新文章
- idea resources目录_最全八种IDEA目录类型标注:Mark Dir as Sources/Resources Root
- Cordova入门系列(一)创建项目
- 【转载】为何要十跪父母
- JETSON NANO 查看 CUDA 版本:NVCC -V 报错:BASH: NVCC: 未找到命令
- 数据库监听。数据库一次notify,Activity多次接收
- 网络安全比赛理论答题(五)
- lambda 和 std::function
- java对List的优雅排序
- php过滤文件中的空行,如何从PHP文本中删除空行?
- 关于VS编译的程序内存分配只能用1.5~2G上限的优化方案
- lopatkin俄大神精简中文系统Windows 10 Pro 19041.21 20H1 Release x86-x64 ZH-CN SMS
- 在多媒体计算机系统中图像的颜色是,图像量化位数越大,记录图像中每个像素点的颜色种类就越多。() - 试题答案网问答...
- 编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。
- 72个嵌入式技术网站
- 看得见的数据结构Android版之开篇前言
- ice 的 Nonmutating 和 Idempotent
- Poly2Tri介绍
- 复数fft的时间复杂度,如何复数捕获阶段,振幅和频率的FFT的结果?
- Web安全常见漏洞原理、危害及其修复建议
- layer弹框,弹出后自动关闭
热门文章
- 一半以上的年轻人存款不足10万元,能带给我们什么思考?
- iOS微信8.0.10版本唤醒隐藏功能,还有这几个变化
- 百战RHCE(第七战:Linux进阶命令5-sudo提权极简管理)
- C#,21根火柴棍问题(21 Matchticks Problem)的算法与源代码
- 键盘上的箭头键失灵怎么修复_如何在Excel中修复箭头键滚动
- C# Winform 中如何获取本机安装输入法,并设置为默认输出语言,如何打开搜狗输入法和手写板...
- [CVPR2021-best]GIRAFFE: Representing Scenes as Compositional Generative Neural Feature Fields
- 2020年金融银行行业网络信息安全、信息泄漏事件汇总
- 转载:统计学读物推荐
- 今生也是第一次开播详细讲解,有多少料全包了