SonarQube是管理代碼質量一個開放平台,能夠快速的定位代碼中潛在的或者明顯的錯誤,提高代碼質量。如果想單純測試或者初期使用SonarQube的話,利用docker來搭建是非常方便的。
原理
通過Jenkins中gitlab插件,自動獲取gitlab更新動作,然后觸發SonarQube scanner功能,把最新提交代碼的檢測結果發送到SonarQube系統中。
1.Jenkins——自動化CI/CD系統,自動拉取代碼。
2.SonarQube——代碼檢測系統,負責檢測gitlab中的代碼。
3.Gitlab——代碼倉庫,存儲代碼。
搭建
Jenkins
docker run -d - p 8888:8080 -p 5000:5000 -v /data/jenkins:/var/jenkins_home jenkins/jenkins:latest
#8080為對外提供訪問端口。
#-v參數是把容器/var/jenkins_home目錄進行持久化,方便后續的配置操作。
#拉取最新的Jenkins鏡像版本。
SonarQube
docker run -d -p 9000:9000 --name sonarqube sonar:latest
#9000對外提供訪問端口
#默認登陸密碼是admin:admin
#注意點:SonarQube7.9版本后不再支持MySQL數據庫,只有postgressql,但如果不涉及到升級可以考慮不使用額外的數據庫,使用內部提供的數據庫即可。
配置
1.SonarQube
SonarQube配置只涉及到2個配置點:①新增中文插件,下載對於版本的sonar-l10n-zh-plugin插件,然后使用docker命令拷貝到容器/opt/sonarqube/extensions/plugins路徑后,重啟服務器②配置用戶token,交予Jenkins。
2.Jenkins
配置系統配置,新增SonarQube服務器推送地址,其中的token值就是SonarQube用戶提供的。
新增SonarQube scanner系統工具,使Jenkins擁有SonarQube scanner的功能。
配置項目中SonarQube操作案例。
①配置時間變量,方便后期SonarQube版本管理
②配置gitlab拉取地址
③在構建選擇項中,選擇Execute SonarQube Scanner,根據具體情況填寫內容
sonar.projectKey=zhouzhifei#項目key sonar.projectName=zhouzhifei#項目名稱 sonar.projectVersion=${date}#可以根據時間來定義版本號,方便查看 sonar.sources=.#項目路徑 sonar.language=js#項目語言 sonar.sourceEncoding=UTF-8#項目編碼 sonar.scm.disabled=true#取消scm
補充:
Gitlab中提供了webhook的功能,可以考慮與Jenkins相結合,形成自動觸發的效果,可以根據自身網絡情況進行自動化觸發項目!