1. 程式人生 > 其它 >Jenkins+SonarQube 構建前審查程式碼

Jenkins+SonarQube 構建前審查程式碼

一、sonar簡介

1、概述

Sonar (SonarQube)是一個開源平臺,用於持續檢查程式碼質量,不只是一個質量資料報告工具,更是程式碼質量管理平臺。
支援Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十幾種程式語言的程式碼質量管理與檢測。

2、例項元件

SonarQube 例項包含三個元件:
1、SonarQube server執行以下程序:
    為 SonarQube 使用者介面提供服務的 Web Server。
    基於 Elasticsearch 的Search Server。
    負責處理程式碼分析報告並將其儲存在 SonarQube 資料庫中的compute engine(計算引擎)。
2、儲存以下內容的資料庫: 程式碼掃描期間生成的程式碼質量和安全性指標和問題。 SonarQube 例項配置。 3、在您的構建或持續整合伺服器上執行的一個或多個Scanner(掃描器)來分析專案。

3、搭建前準備

伺服器要求:由於sonar使用嵌入式elasticsearch,主機要符合es生產模式要求和檔案描述符配置。需要以root身份執行一下引數:
    sysctl -w vm.max_map_count=262144
    sysctl -w fs.file-max=65536
    ulimit -n 65536
    ulimit -u 4096
sonarqube需要資料庫的支援:
    微軟 SqlServer
    Oracle
    PostgreSQL
    MySQL(sonarqube7.9以上已不再支援mysql資料庫)
服務版本
  sonarqube:
8.9.1-community (192.168.1.20)
  postgresql:latest (192.168.1.20)

二、Docker搭建PostgreSQL資料庫

mkdir -p /server/docker/postgresql/data
docker run --name postgresql -p 5432:5432 \
-e POSTGRES_PASSWORD=123456 \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v /etc/localtime:/etc/localtime:or \
-v /server/docker/postgresql/data:/var/lib/postgresql/data \
-itd postgres

建立sonar資料庫及使用者名稱密碼:

登入資料庫:psql 
      psql -d [databasename]        #登入其他資料庫
建立使用者:create user sonar password 'sonar';
參照template0(模板資料庫)建立使用者資料庫:
    create database sonar template template0 owner sonar;
將sonar資料庫的所有許可權都賦予sonar使用者:
    grant all privileges on database sonar to sonar;

三、Docker搭建SonarQube

1、搭建sonarqube

啟動測試sonar,並複製檔案到宿主機,做目錄對映:

docker run -d --name sonar -p 9000:9000 sonarqube:8.9.1-community
mkdir -p /server/docker/sonarqube
docker cp sonar:/opt/sonarqube/conf /server/docker/sonarqube
docker cp sonar:/opt/sonarqube/data /server/docker/sonarqube
docker cp sonar:/opt/sonarqube/logs /server/docker/sonarqube
docker cp sonar:/opt/sonarqube/extensions /server/docker/sonarqube
docker rm -f sonar #刪除測試sonarqube

啟動正式sonar:

docker run -d --name sonar -p 9000:9000 \
-e SONARQUBE_JDBC_URL=jdbc:postgresql://192.168.1.20:5432/sonar \
-e SONARQUBE_JDBC_USERNAME=sonar \
-e SONARQUBE_JDBC_PASSWORD=sonar \
-v /etc/localtime:/etc/localtime:or \
-v /server/docker/sonarqube/conf:/opt/sonarqube/conf \
-v /server/docker/sonarqube/data:/opt/sonarqube/data \
-v /server/docker/sonarqube/logs:/opt/sonarqube/log \
-v /server/docker/sonarqube/extensions:/opt/sonarqube/extensions \
-itd sonarqube:8.9.1-community
SONARQUBE_JDBC_URL=jdbc:postgresql://192.168.1.20:5432/sonar   #postgresql的ip、埠、資料庫名
SONARQUBE_JDBC_USERNAME=sonar         #postgresql的使用者名稱
SONARQUBE_JDBC_PASSWORD=sonar         #postgresql的密碼
-v /etc/localtime:/etc/localtime:or     #容器跟宿主機時間同步

訪問sonar:192.168.1.20:9000    預設賬戶名密碼:admin/admin

2、sonar頁面漢化

administrator——marketplace——plugins搜尋Chinese——Chinese pack,install——restart server重啟

漢化完成:

四、Jenkins頁面配置持續審查專案程式碼

登入Jenkins管理頁面,外掛管理——安裝外掛“sonarqube scanner”

1、配置連線sonarqube伺服器

Jenkins系統管理——系統設定——SonarQube servers——add sonarqube

Server authentication token是sonarqube服務的登入憑證,登入到sonarqube頁面,建立使用者token,然後填到此處即可:

2、安裝sonarqube工具

系統管理——全域性工具配置——SonarQube Scanner——選擇自動安裝

3、專案中配置sonarqube

進入專案配置中,構建——增加構建步驟——選擇“Execute SonarQube Scanner”

然後配置 Execute SonarQube Scanner分析原始碼:

Analysis properties 填寫配置:

sonar.projectKey=          
sonar.projectName=          #這個可自定義,報告發送到sonarqube後,sonarqube將建立以此命名的project
sonar.projectVersion=1.0      #專案版本號
sonar.language=java         #表示分析java原始碼
sonar.java.source=11         #表示jdk版本
sonar.java.binaries=gateway-service    #jenkins專案中有多個專案名,就寫需要構建jar包的那個專案名;只有一個專案就寫“.”。
sonar.sources=gateway-service/src  #表示原始碼目錄
sonar.sourceEncoding=UTF-8
sonar.scm.disabled=true

4、檢視分析結果

選擇分支構建jenkins 專案後,分析結果將傳送到sonarqube:

點選SonarQube將進入sonar 分析結果頁面:

jenkins+sonar審查原始碼完成。

五、jenkins+sonarqube搭建過程遇到的報錯

  持續更新中......

作者:等風來~~

出處:https://www.cnblogs.com/cfzy/p/14991945.html

本部落格所有文章僅用於學習、研究和交流目的,歡迎轉載。

如果覺得文章寫得不錯,或者幫助到您了,請點個贊。

如果文章有寫的不足的地方,請你一定要指出,因為這樣不光是對我寫文章的一種促進,也是一份對後面看此文章的人的責任。謝謝。