SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误。
docker安装
1、拉取 postgres:docker pull postgres:10
2、拉取sonarqube:docker pull sonarqube:7.9.1-community
3、启动postgres:docker run -d -p 5431:5432 -e POSTGRES_PASSWORD=1 --name postgres postgres:10
4、进入postgres创建数据库sonar
5、启动sonarqube:docker run -d -p 1022:22 -p 9000:9000 -e "SONARQUBE_JDBC_URL=jdbc:postgresql://192.168.6.16:5431/sonar" -e "SONARQUBE_JDBC_USERNAME=postgres" -e "SONARQUBE_JDBC_PASSWORD=1" --name sonarqube sonarqube:7.9.1-community
sonarqube使用
1、sonarqube安装简体中文包:
依次点击页面:Administration – Marketplcae – All – Chinese Pack(Install)
当安装状态变为Install Pending时,点击最上边的Rastart按钮
2、创建一个普通用户用于做代码质量检测
3、生成令牌:testing_sonarqube
gitlac-ci集成SonarQube
Sonar GitLab Plugin 安装
在 SonarQube 上安装该插件安装方式很简单。
方式一:可以直接下载 https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases该插件,放到 <sonarqube_install_dir>/extensions/plugins
目录,重启 SonarQube 即可。
方式二:admin 登录 SonarQube,点击 配置 —> 系统 —> 更新中心 —> Available —> Search,输入 GitLab,在列表中点击 install 安装,安装完毕后重启 SonarQube 即可。
注意:该插件 sonar-gitlab-plugin 兼容 SonarQube 的版本信息如下
SonarQube | sonar-gitlab-plugin | Last version |
---|---|---|
<version> < 5.4 |
<version> <= 1.6.6 |
1.66 |
5.4 <= <version> < 5.6 |
<version> = 1.7.0 |
1.7.0 |
<version> >= 5.6 |
<version> > 1.7.0 |
2.1.0 |
配置 GitLab 通用账户
这里为了方便统一管理,我们在 GitLab 上注册一个通用账号:sonarQube,作为对接 SonarQube 的统一账户,注册过程略,获取Token方式入下:
sonarQube 登录,点击 setting —> 访问令牌 ,获取的 User Token 为下边插件配置使用。同时还需要将 SonarQube 加到项目成员或项目所属项目组成员里面去,这样才能有权限 comment 和添加注释行。
配置 sonar-gitlab-plugin 插件
admin 登录 SonarQube,点击 配置 —> 通用配置 —> GitLab —> Reporting —> 设置 GitLab User Token 以及 GitLab url。GitLab User Token 为 GitLab 上用户的 Token(这里使用上边统一账户 sonarQube Token),其他配置默认即可。
SonarQube生成Token
在sonarqube中生成token供yml中使用
gitlab-ci使用(以java maven项目为例子)
1)配置pom.xml(以下为所需要加载的插件:spring-boot-maven-plugin、maven-compiler-plugin、sonar-maven-plugin、jacoco-maven-plugin)
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.6.1.1688</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.5</version>
</plugin>
</plugins>
</pluginManagement>
</build>
2)gitlab-ci.yml
variables:
MAVEN_CLS_OPTS: "-s /usr/local/maven/conf/settings.xml --batch-mode"
MAVEN_OPTS: "-Daven.repo.local=/home/gitlab-runner/.m2/repository"
SONAR_TOKEN: "24e536eec4084dc9859137c1734ebb6b1612de95" # sonarqube生成的token
SONAR_HOST_URL: "http://192.168.6.16:9000/" # sonarqube的地址
GIT_DEPTH: 1
stages:
- test
job1:
stage: test
script:
- cd $CI_PROJECT_DIR/demo
- mvn --batch-mode verify sonar:sonar -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_TOKEN