Drollery Medieval drollery of a knight on a horse

🏆 欢迎来到本站: https://xuchangwei.com/希望这里有你感兴趣的内容

flowery border with man falling
flowery border with man falling

CICD: sanorqueb

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/**/*

sonarqube 审查规则