CICD: sanorqueb
- TAGS: cicd
sonarqube
Sonarqube 介绍
SonarQube 是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量。 通过插件形式,可以支持众多计算机语言,比如 java, C#, go,C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等。sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具来检测你的代码,帮助你发现代码的漏洞,Bug,异味等信息。
Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。
安装
部署前环境依赖
参考文档: Prerequisites and overview
提前安装:
- Oracle JRE 11 或者 OpenJDK 11
- 小规模团队: 2GBRAM才能高效运行OS需要1GB的空闲RAM
- docker
- postgres 13
部署命令
docker run -d --name sonarqube9.3 -p 8888:9000 -e SONARQUBE_JDBC_URL=jdbc:postgresql://pfgcharbor.ws.com:5432/sonar_new -e SONARQUBE_JDBC_USERNAME=postgres -e SONARQUBE_JDBC_PASSWORD=xxx -v conf:/opt/sonarqube/conf -v extensions:/opt/sonarqube/extensions -v logs:/opt/sonarqube/logs -v data:/opt/sonarqube/data pfgc-ops-harbor.gamepind.com/ops/sonarqube:latest
maven 方式接入
- 登录 sonarqube 平台,创建管理员的 token 用于登录,个人–> my acount
maven 命令接入
在 sonarqube 上提前创建好 projectKey 对应的项目,扫描代码时候需要唯一
mvn -Dmaven.repo.local=/m2/repository sonar:sonar -Dsonar.projectKey=ludo-gateway -Dsonar.host.url=https://sonarqube.xxx.com -Dsonar.login=623e254a011fe10e6b7f38594464b764f9eaff70 JAVA_HOME=/opt/jdk-11.0.2;/usr/maven/bin/mvn sonar:sonar -Dsonar.projectKey=${application}_${service_name} -Dsonar.projectName=${application}_${service_name} -pl analysis-server -am -Dsonar.coverage.jacoco.xmlReportPaths=analysis-server/target/site/jacoco/jacoco.xml -Dsonar.exclusions=**/src/**/msg/**/*,**/target/**/msg/**/*,**/src/**/proto/**/*,**/target/**/proto/**/*,utils/**/*,**/msg/*,core-sdk/**/* # 说明 -Dsonar.projectName 会在 sonarqube 自动创建项目 -Dsonar.exclusions 过滤不扫描
Dockerfile
#maven java 11 package #FROM xxx.com/ops/ludo-maven:3.6.0-jdk-11-slim-20220420 as builder FROM xxx.com/ops/ludo-maven:test as builder WORKDIR /opt/ COPY . . RUN mvn -Dmaven.repo.local=/m2/repository clean package -Dmaven.test.skip=true RUN mvn -Dmaven.repo.local=/m2/repository sonar:sonar -Dsonar.projectKey=ludo-gateway -Dsonar.host.url=https://sonarqube.xxx.com -Dsonar.login=623e254a011fe10e6b7f38594464b764f9eaff70 -Dsonar.exclusions=**/src/**/msg/**/*,**/target/**/msg/**/*,**/src/**/proto/**/*,**/target/**/proto/**/* FROM xxx.com/ops/ludo_base_amazonlinux_java:20220420 RUN ln -sf /usr/share/zoneinfo/Asia/Kolkata /etc/localtime && echo 'Asia/Kolkata' >/etc/timezone && mkdir -p /opt/ #Copy the two-stage output program to run the jar to the specified /opt directory COPY --from=builder /opt/web/target/ludo-gateway.jar /opt/ WORKDIR /opt/
sonar-scanner
sonar-scanner -Dsonar.projectKey=${application}_${service_name} -Dsonar.host.url=${sonar_url} -Dsonar.sourceEncoding=UTF-8 -Dsonar.sources=${code_path}/gameinfo-server/src/main -Dsonar.java.binaries=${code_path}/gameinfo-server/target/classes -Dsonar.exclusions=**/src/**/msg/**/*,**/target/**/msg/**/*,**/src/**/proto/**/*,**/target/**/proto/**/*