相关文章推荐
胆小的茴香  ·  超详细,自动化测试接入Jenkins+Son ...·  3 周前    · 
追风的打火机  ·  QT的控制台程序解决中文乱码的三种方式 - ...·  1 年前    · 
魁梧的汤圆  ·  在Android平台开发蓝牙应用程序 - 知乎·  1 年前    · 
腹黑的柳树  ·  PyQt5美化界面 - 简书·  1 年前    · 
满身肌肉的拖把  ·  记——在vue-draggable-resi ...·  2 年前    · 
贪玩的皮带  ·  chrome禁用js函数-掘金·  2 年前    · 
Code  ›  超详细,自动化测试接入Jenkins+Sonar质量门禁实践开发者社区
自动化测试 sonar jenkins sonarqube
https://cloud.tencent.com/developer/article/1877773
胆小的茴香
3 周前
测试开发技术

超详细,自动化测试接入Jenkins+Sonar质量门禁实践

腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
发布
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
测试开发技术
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
社区首页 > 专栏 > 超详细,自动化测试接入Jenkins+Sonar质量门禁实践

超详细,自动化测试接入Jenkins+Sonar质量门禁实践

作者头像
测试开发技术
发布 于 2021-09-15 15:31:41
发布 于 2021-09-15 15:31:41
2.2K 0 0
代码可运行
举报
文章被收录于专栏: 测试开发技术 测试开发技术
运行总次数: 0
代码可运行

大家好,我叫董鑫,一名在测试开发道路上的新手,是狂师老师全栈测开训练营上一期的学员。第一阶段的学习已然结束,收获颇多,了解了很多在自己平时测试工作无法接触到的新知识,比如这次在这里分享的 Sonarqube 进行静态代码扫描并集成 Jenkins 的知识,是分享也是自我学习的总结。若有不对的地方,还请各位同行,同学,老师及时指正。

之前在公众号也分享过一篇文章: 测开新手:从0到1,自动化测试接入Jenkins学习

1. 什么是SonarQube

SonarQube 是一个开源的代码质量管理系统,用于检测代码中的错误,漏洞和代码规范,通过插件的机制,

可以基于现有的 Gitlab 、 Jenkins 集成、以便在项目拉取后进行连续的代码检查。

优点:

◆ 支持众多计算机编程语言

◆ 通过插件机制能集成IDE、Jenkins、Git等

◆ 内置大量常用代码检查规则

◆ 支持定制开发规则

◆ 可视化界面

◆ 支持从可靠性、安全性、可维护性、覆盖率、重复率等 方面分析项目

具体的配置及文档可以访问下面的链接查看:

代码语言: javascript
代码 运行次数: 0
运行
复制
https://www.sonarqube.org/downloads/ 
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/ 

2. Jenkins插件安装及配置

Sonarqube 想要与 Jenkins 集成,需要安装相应的插件来支持。

在插件管理中搜索名为 Sonarqube Scanner for Jenkins 的插件 并安装。

安装好插件后,还需要配置相应的服务和工具信息:

2.1. 系统设置->SonarQube servers

  • name:可自定义)
  • server url:这个地址就是你sonar服务所在的地址
  • token:在sonar项目中生成的token

2.2. 全局工具配置》SonarQube Scanner

建议不采用自动安装,使用手动下载配置好的sonar scanner

  • name:自定义sonar scanner名称,建议使用sonar-scanner
  • SONAR_RUNNER_HOME:sonar scanner所在的家目录

3. 自由风格的job使用sonar

3.1 配置代码仓库地址:

3.2 勾选sonarqube 服务并选择token:

3.3 在构建中添加Exeute SonarQube Sanner

这里可以使用两种方式:

  • a. 直接将sonar-project.properties配置内容写到 Analysis properties 中
  • b. 将配置好的sonar-project.properties文件放置在代码目录中,在 Path to project properties 配置相应的文件名

建议使用第二种方式来管理 我配置的 sonar-project.properties 文件如下:

保存好后,就可以来构建了。构建后项目页面可以直接跳转到sonarqube服务查看。

4. pipeline流水线使用sonar

4.1 构建一个流水线job,流水线pipeline script如下编写:

代码语言: javascript
代码 运行次数: 0
运行
复制
pipeline {
    agent any
    stages {
        stage('拉取代码') {
            steps {
                git credentialsId: 'gitee', url: 'https://gitee.com/dx0001/work.git'
        stage('静态代码静态扫描') {
            steps {
                withSonarQubeEnv('sonarqube'){
                    bat "sonar-scanner"

注意:这里的名称是在Jenkins中系统管理--sonarqube servers添加的名称 同样的,设置好job后就可以构建进行代码扫描了。

5. 接入Sonar质量门禁

通过上面的job,只是代码扫描可能无法满足日常的情况,当扫描的结构不满足时我可能就不进行后面的步骤了,这样的情况,我们就需要接入质量门禁的方式来实现。

5.1 在sonar服务端的质量阀中设置质量门禁,添加要运用的项目

质量配置->质量阀

这里可以添加指标来定义通过扫描的条件。然后将设置的质量阀分配给要扫描的项目。

5.2 在sonar服务端的配置里面添加网络调用hook

配置->网络调用

这里添加Jenkins调用的地址,用来回调扫描的结果。URL配置为:Jenkins地址+/sonarqube-webhook

5.3 流水线改造

代码语言: javascript
代码 运行次数: 0
运行
复制
pipeline {
    agent any
    stages {
        stage('拉取代码') {
            steps {
                git credentialsId: 'gitee', url: 'https://gitee.com/dx0001/work.git'
        stage('静态代码静态扫描') {
            steps {
                withSonarQubeEnv('sonarqube'){
                    bat "sonar-scanner"
        stage('检查结果分析') {
            steps {
                script{
                    timeout(5){
                        def qg=waitForQualityGate()
                        echo "结果状态:${qg.status}"
                        if(qg.status!='OK')
                            error '未达到代码门禁要求!'
 
推荐文章
胆小的茴香  ·  超详细,自动化测试接入Jenkins+Sonar质量门禁实践开发者社区
3 周前
追风的打火机  ·  QT的控制台程序解决中文乱码的三种方式 - ZachLi - 博客园
1 年前
魁梧的汤圆  ·  在Android平台开发蓝牙应用程序 - 知乎
1 年前
腹黑的柳树  ·  PyQt5美化界面 - 简书
1 年前
满身肌肉的拖把  ·  记——在vue-draggable-resizable中使用v-charts和data-v时,组件无法根据父容器自适应的问题_vue-draggable-resizable组件超出父容器_油炸猪蹄。的博客-CSDN博客
2 年前
贪玩的皮带  ·  chrome禁用js函数-掘金
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号