Docker搭建sonarqube

前言:

SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube。此外 SonarQube 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。

特性:

  • 多语言的平台: 支持超过20种编程语言,包括Java、Python、C#、C/C++、JavaScript等常用语言。
  • 自定义规则: 用户可根据不同项目自定义Quality Profile以及Quality Gates。
  • 丰富的插件: SonarQube 拥有丰富的插件,从而拥有强大的可扩展性。
  • 持续集成: 通过对某项目的持续扫描,可以对该项目的代码质量做长期的把控,并且预防新增代码中的不严谨和冗余。
  • 质量门: 在扫描代码后可以通过对“质量门”的比对判定此次“构建”的结果是否通过,质量门可以由用户定义,由多维度判定是否通过。

注:这东西个人还是仅测试不敢玩哈哈哈。个性的程序员太多,出现各种各样的坏味道对应小运维来说也不知道怎么该跟程序所解释对接。不能作为一个清晰既定的衡量标准去衡量各种。各种阀值做不到正确的配置。只用于演示演示。

关于SonarQube 的版本

  1. Community
  2. Developer
  3. Enterprise
  4. Data Center

过去个人玩是只在kubernetes上部署了SonarQube 的7.9lts版本(community社区版本)。lts顾名思义长期稳定支持版。kubernetes的部署方式可以参见豆丁大佬的博文:http://www.mydlq.club/article/25/。个人也写个一篇类似的文章helm的安装方式搭建:https://duiniwukenaihe.github.io/2019/11/29/k8s-helm-install-postgresql-sonarqube/

一. SonarQube部署过程:

注:报名了泽阳大佬的jenkins CI/CD训练营。基本就是按照阳明大佬的步骤来的.想更深入学习的可以报名:https://www.idevops.site/。物超所值。满满的干货。当然了大佬课程是搭建的7.9.6的版本,我是直接玩8.9.0的lts了。

1. 前提条件:

个人环境是在内网搭建的proxmox虚拟化的服务器上虚拟的centos8.3.并参照https://blog.csdn.net/qq_41570843/article/details/106182073安装了docker环境的初始化主机。

主机ip为:192.168.0.109

2. docker搭建SonarQube

关于 lts镜像 为什么用sonarqube:8.9.0-community image呢?可以到dockerhub看下两个镜像的tag

2. 上传到gitlab私有仓库

其实是跟着泽阳大佬的步骤做的一个devops-maven-service gitlab项目。反正就是那么的一个demo没有做什么复杂的设置。其实如果只是只sonarqube集成也可以不先整合到gitlab的,但是为了尽量还原自己的环境,故上传到gitlab了。

image.png

3. 克隆仓库

git clone http://192.168.0.173/devops/devops-maven-service

4. maven打包

mvn clean package

一定记得mvn打包。自己脑袋糊涂了。不maven打包哪里会有target class目录呢......

执行扫描会报错的(扫描代码详见下一步)

image.png
image.png

5. sonar扫描

    sonar-scanner -Dsonar.host.url=http://192.168.0.209:9000 \\
-Dsonar.projectKey=devops-maven-service \\
-Dsonar.projectName=devops-maven-service \\
-Dsonar.projectVersion=1.0 \\
-Dsonar.login=admin \\
-Dsonar.password=abc@1234 \\
-Dsonar.ws.timeout=30 \\
-Dsonar.projectDescription="my first project!" \\
-Dsonar.links.homepage=http://192.168.0.173/devops/devops-maven-service \\
-Dsonar.links.ci=http://192.168.0.205:8080/job/demo-pipeline-service/ \\
-Dsonar.sources=src \\
-Dsonar.sourceEncoding=UTF-8 \\
-Dsonar.java.binaries=target/classes \\
-Dsonar.java.test.binaries=target/test-classes \\
-Dsonar.java.surefire.report=target/surefire-reports

嗯配置参数基本字面意思homepage ci都是乱写的可以忽略。

具体参数实例可以参考: https://docs.sonarqube.org/latest/analysis/analysis-parameters/

各种语言的扫描示例:https://docs.sonarqube.org/latest/analysis/languages/

反正正常扫描完了就是下面专业的

image.png

6. 登陆sonarqube web查看结果

介绍后登陆sonarqubeweb管理页面查看:

image.png

7.就想拿一个自己的项目跑一下

嗯 貌似就是这样的。拿自己内部的一个tts的项目测试下(起名是个学问,这样的名字我也很无语。其实就是一个使用阿里云tts文字转语音的服务)。

1. 下载代码到sonar服务器忽略

2. mvn 打包

mvn clean package

讲真出现那么多Positive matches 我有点强迫症。都是大佬写的。就抛砖引玉了......

image.png

3. sonar扫描

    sonar-scanner -Dsonar.host.url=http://192.168.0.209:9000 \\
-Dsonar.projectKey=tts \\
-Dsonar.projectName=tts \\
-Dsonar.projectVersion=1.0 \\
-Dsonar.login=admin \\
-Dsonar.password=abc@1234 \\
-Dsonar.ws.timeout=30 \\
-Dsonar.projectDescription="my first project!" \\
-Dsonar.links.homepage=http://192.168.0.173/devops/devops-maven-service \\
-Dsonar.links.ci=http://192.168.0.205:8080/job/demo-pipeline-service/ \\
-Dsonar.sources=src \\
-Dsonar.sourceEncoding=UTF-8 \\
-Dsonar.java.binaries=target/classes \\
-Dsonar.java.test.binaries=target/test-classes \\
-Dsonar.java.surefire.report=target/surefire-reports

4. 登陆sonarqube查看

扫描完成登陆sonarqube查看 嗯 tts的应用也有了

image.png

后记:

对于我来说和鬼东西段时间还是用不起来。只能算是扩展下自己的知识面,了解下人家的思想和流程......。然后再准备搞一下与jenkins的流程。就为了体验一下正常的cicd工具流过程。

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
Docker搭建sonarqube
SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集...
<<上一篇
下一篇>>