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)
jenkins+gogs搭建代碼自動化運維部署平台

 二、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搭建過程遇到的報錯

  更新完成,點擊跳轉。

 


免責聲明!

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



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