sonar的意義毋庸置疑,提前發現程式碼bug或者漏洞,提高程式碼質量,控制應用整體質量和安全,以及事後的分析,開發人員的成長與開發能力的評估等都提供了量化的指標。
無論對於開發人員還是管理人員,都是一把利器,重要的是開源免費!!!免費!!
先了解幾個概念:
Docker一切皆可docker化,遮蔽環境和繁瑣配置,執行下面的容器
docker-compose將docker run命令配置化,集中化管理,容器管理利器
SonarQube程式碼質量檢查與結果分析伺服器,自帶一個ES查詢服務,資料儲存到Postgres中
Sonar-scanner程式碼質量檢查客戶端,並將結果同步到SonarQube服務端
GitlabCI\CD的核心,devops都是圍繞它來做的
Gitlab-runner任務執行器,用來執行自動化程式碼檢查,自動化構建,自動測試,自動部署等
接下來搭建環境:
假設Docker,docker-compose,Gitlab,Gitlab-runner都已經pull拉起來了,重點說明SonarQube如何與Gitlab做整合。
SonarQube安裝網上各種教程,還是官網比較靠譜,直接docker-compose一鍵部署。
官網docker-compose指令碼:https://docs.sonarqube.org/latest/setup/install-server/
替換目錄為docker宿主機自定義目錄即可
vi docker-compose.yml#貼上官網內容,替換目錄為自己的目錄,並設定資料庫使用者名稱密碼###儲存後,一鍵啟動docker-compose up -d##檢視SonarQube伺服器是否起來http://localhost:9000預設使用者名稱密碼:admin/admin
sonarqube伺服器登入頁
SonarQube中文外掛安裝中文外掛下載地址:https://github.com/SonarQubeCommunity/sonar-l10n-zh/tags
將 下載的jar 包放入 /data/sonarqube/extensions/plugins ,重啟 SonarQube。
與Gitlab整合SonarQube中新建使用者,並生成令牌,供sonar-scanner使用新建使用者
生成令牌
Gitlab新建共享runner管理區域->Runners,新建共享runner,與Gitlab伺服器運行於一臺主機
docker exec –it aaaaa gitlab-runner register
tag標記為sonar,執行方式選擇docker
共享runner
.gitlab-ci.yml中增加程式碼掃描任務用到了sonar-scanner映象,用來傳送資訊到sonarqube伺服器。sonar-scanner執行時,需要指定SonarQube伺服器地址,login授權碼,專案名稱,掃描目錄,jdk版本等。
指令碼
提交程式碼,測試程式碼質量檢查指令碼成功了
SonarQube伺服器檢視程式碼檢查結果專案核查結果彙總
妥妥滴