配置 sonar-gerrit plugins steps
pre-condition:
1. Sonarqube(5.5及以上,本文使用的版本為6.1.3)
關於如何安裝配置Sonarqube,請參考其他文檔
2. Gerrit(2.11及以上,本文使用版本為2.13.2)
關於如何安裝配置Gerrit,請參考其他文檔
3. Jenkins(1.7及以上,本文使用版本為2.35)
關於如何安裝配置Jenkins,請參考其他文檔
4. Gerrit-Trigger (本文使用版本為2.23)
5. Sonar-scanner (本文使用版本為2.8)
6. sonar-gerrit-plugin(本文使用版本為1.0.7.6)
7. sonar-gerrit-plugin-2.3.0.jar
Steps:
1. sonar-gerrit-plugin-2.3.0.jar 將jar包復制到$SONARQUBE_HOME/extensions/plugins/下
2. 以admin用戶登錄sonarqube dashboard -> Administration -> Security -> Users
3. 選擇要使用的user生成user token,該token作為jenkins登錄sonarqube的用戶憑證,保存好token。
4. 登錄jenkins -> 系統管理 -> 系統設置 -> SonarQube servers
Name:${SonarQube servername}
Server URL : $SONARQUBE_URL
Server version : 5.3 or higher
Server authentication token:填入step3生成的token
點擊保存
5. 以admin用戶登錄jenkins -> 系統管理 -> Gerrit Trigger
參考jenkins-gerrit-config.md內容配置
*****注意*****
點擊高級
check Use REST API
Gerrit HTTP Username(jenkins發送sonarqube掃描結果至gerrit使用的賬戶)
Gerrit HTTP Password(jenkins發送sonarqube掃描結果至gerrit使用的賬戶)
check Enable Code-Review
check Enable Verified
點擊保存
6. 以admin用戶jenkins -> 系統管理 -> Global Tool Configuration
SonarQube Scanner -> SonarQube Scanner安裝
SONAR_RUNNER_HOME ${SONAR_RUNNER_HOME}
點擊保存
7. 創建jenkins job
新建-> 新建一個maven風格的項目
源碼管理:選擇Git
Repository URL: gerrit 代碼倉庫
Credentials:選擇連接gerrit賬號
Branches to build:*/master
構建觸發器
選擇Gerrit Event
Gerrit Trigger :
Choose a Server 選擇step5的gerrit servername
Trigger on : 根據項目需要修改
參考jenkins-gerrit-config.md內容配置
8. Post Steps 增加Execute SonarQube Scanner
其他保留設為空
Additional arguments 增加以下配置:
-X (打印debug級別日志)
-DGERRIT_SCHEME=http (以http協議連接gerrit)
-DGERRIT_HTTP_AUTH_SCHEME=digest (gerrit默認的http認證)
-DGERRIT_HOST=gerrit.me (gerrit host)
-DGERRIT_HTTP_PORT=80 (訪問gerrit web的端口)
-DGERRIT_HTTP_USERNAME=$gerrit_user (jenkins登錄gerrit使用的賬號)
-DGERRIT_HTTP_PASSWORD=$password (jenkins登錄gerrit使用的賬號)
-Dsonar.analysis.mode=preview (要生成sonar-gerrit-plugin要求的報告,必須使用preview mode)
-Dsonar.issuesReport.html.enable=true (sonar報告生成html格式)
-Dsonar.report.export.path=sonar-report.json (sonarqube報告的格式)
9. 增加構建后操作 Post Action
SonarQube Settings:
SonarQube URL: SonarQube 的訪問地址
SonarQube report path: .sonar/sonar-report.json (sonarscanner掃描完成后會在workspace下生成.sonar文件夾,sonar-report.json報告存放在.sonar下)
Filter Settings:
Report issues having severity level higher or equal to:Major (反饋至gerrit的時候的issue 級別,可修改)
其他保持默認,點擊保存
舉例如下:
當向gerrit trigger監聽的project/branch發生變化時,即可觸發jenkins job execution, 執行效果參考
https://wiki.jenkins-ci.org/display/JENKINS/Sonar+Gerrit
jenkins wiki寫的比較簡略,其他隱藏條件沒有寫的很清楚
花了一天時間,查了各種github, stackoverflow,還拉了插件源碼下來,終於搞定了,寫個blog紀念一下。
補充踩過的坑:
如果不用admin賬戶進行操作,確保以下幾點:
1. jenkins用於gerrit的賬戶屬於NonInactive Users
2. 監聽的project繼承的user group必須包含jenkins user且屬於owner權限
另一坑:
jenkins管理員郵箱必須與smtp認證的賬號保持一致,才能發郵件