gitlab-ci集成SonarQube代碼質量檢查


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM