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
本部落格所有文章僅用於學習、研究和交流目的,歡迎轉載。
如果覺得文章寫得不錯,或者幫助到您了,請點個贊。
如果文章有寫的不足的地方,請你一定要指出,因為這樣不光是對我寫文章的一種促進,也是一份對後面看此文章的人的責任。謝謝。