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