SonarQube系列 目錄
- SonarQube (1) 基本環(huán)境搭建
- SonarQube (2) sonar runner安裝配置
- SonarQube (3) C++插件安裝與規(guī)則配置
- SonarQube (4) 運(yùn)行一個(gè)Sample
- SonarQube (5) 集成至Jenkins
- SonarQube (終) Gitlab提交代碼自動(dòng)化測試
整體架構(gòu)圖
- 軟件開發(fā)工程師提交代碼至Gitlab抓狭;
- 觸發(fā)Gitlab-CI聪建,啟動(dòng)gitlab-runner Docker鏡像準(zhǔn)備運(yùn)行測試送挑;
- Gitlab-CI觸發(fā)sonar_runner Docker鏡像啟動(dòng)屯远,并進(jìn)行代碼分析;
- 代碼分析結(jié)果在commit記錄作一次comment颤绕;
- Gitlab管理員合并代碼至develop或master分支诅炉;
- 觸發(fā)Gitlab-CI蜡歹,啟動(dòng)gitlab-runner Docker鏡像準(zhǔn)備運(yùn)行測試屋厘;
- Gitlab-CI觸發(fā)sonar_runner Docker鏡像啟動(dòng)涕烧,并進(jìn)行代碼分析;
- 代碼分析結(jié)果保存至SonarQube平臺(tái)數(shù)據(jù)庫中汗洒;
- 測試/開發(fā)組等用戶訪問SonarQube網(wǎng)頁议纯,查看分析的具體結(jié)果。
具體配置過程
sonar-scanner Docker鏡像配置
sonar-scanner Docker鏡像主要工作:
- 拉取代碼溢谤;
- 運(yùn)行sonar-scanner瞻凤。
因此需要先下載sonar-scanner并配置環(huán)境變量等,保證sonar-scanner能夠運(yùn)行世杀,并能將結(jié)果提交至SonarQube平臺(tái)阀参。
sonar-scanner安裝
此處假設(shè)已有一個(gè)基礎(chǔ)鏡像
啟動(dòng)基礎(chǔ)鏡像
下載sonar-scanner壓縮包: SonarQube Scanner
解壓至目標(biāo)目錄<install_directory>(如 /etc)
更新 <install_directory>/conf/sonar-scanner.properties 文件中如下內(nèi)容
#----- Default SonarQube server
#sonar.host.url=http://localhost:9000
如:
#----- Default SonarQube server
sonar.host.url=http://192.168.2.465:9000
- 將<install_directory>/bin添加到PATH中
export PATH=<install_directory>/bin:PATH
- 保存docker鏡像,并命名為sonar-scanner
docker commit ID sonar-scanner
gitlab-runner Docker鏡像配置
- 拉取gitlab-runner Docker鏡像
docker pull gitlab/gitlab-runner:latest
- 啟動(dòng)gitlab-runner
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
- 注冊runner
# docker exec -it gitlab-runner gitlab-ci-multi-runner register
填寫內(nèi)容說明:
gitlab-ci coordinator URL: 期望設(shè)置的gitlab-ci URL瞻坝;
gitlab-ci token: 從“目標(biāo)Gitlab項(xiàng)目>setting>CI/CD Pipelines>Specific Runners”獲戎肟恰;
gitlab-ci tag: runner的標(biāo)識所刀,在yaml文件中注明所選擇的runner時(shí)需要用到(實(shí)例:yx-46)衙荐;
executor: 此處gitlab-runner安裝于docker鏡像中,因此選擇doker浮创;
default Docker image: gitlab-ci觸發(fā)時(shí)默認(rèn)拉取的docker鏡像忧吟,此處可以填寫sonar-scanner
- 填寫如下內(nèi)容:
Please enter the gitlab-ci coordinator URL:
# http://192.168.2.46/ci
Please enter the gitlab-ci token for this runner:
# 項(xiàng)目的 token
Please enter the gitlab-ci description for this runner:
# Runner 的 description
Please enter the gitlab-ci tags for this runner (comma separated):
# Runner 的 tag
Whether to run untagged builds [true/false]:
# true
Please enter the executor: docker, parallels, shell, kubernetes, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine:
# docker
Please enter the default Docker image (e.g. ruby:2.1):
# 填入構(gòu)建 Docker image 時(shí)填寫的 image 名稱
若無意關(guān)閉gitlab-runner,再次啟動(dòng)前需要移除原來容器記錄
docker stop gitlab-runner && docker rm gitlab-runner
再執(zhí)行啟動(dòng)鏡像的操作即可
docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest
sonar gitlab-plugin配置
插件安裝
admin 登錄 SonarQube斩披,點(diǎn)擊 配置 —> 系統(tǒng) —> 更新中心 —> Available —> Search溜族,輸入 GitLab,在列表中點(diǎn)擊 install 安裝垦沉,安裝完畢后重啟 SonarQube 即可
獲取Gitlab帳戶 Private token
建議新建一個(gè)SonarQube用戶并賦讀權(quán)限煌抒,對測試結(jié)果的評論由此賬戶發(fā)出更為直觀
登錄Gitlab帳號,點(diǎn)擊 setting > Account乡话,復(fù)制Private token
配置sonar gitlab-plugin
admin 登錄 SonarQube摧玫,點(diǎn)擊 配置 —> 通用配置 —> GitLab —> Reporting —> 設(shè)置 GitLab User Token 以及 GitLab url
創(chuàng)建gitlab-ci.yml配置文件
以下為實(shí)現(xiàn)兩種Pipline流程的yml文件:
- Sonar_Analyze流程,執(zhí)行sonar-scanner操作绑青,直接將分析結(jié)果保存至SonarQube server中诬像;
- Sonar_Preview流程,執(zhí)行sonar-scanner操作闸婴,模式為preview坏挠,在分析結(jié)束后將結(jié)果評論在commit記錄中。
.gitlab-ci.yml內(nèi)容:
image: sonar
Sonar_Analyze:
script:
- source /etc/profile.d/sonarrc.sh
- sonar-scanner
only:
- develop
tags:
- yx-gitlab-runner
Sonar_Preview:
script:
- source /etc/profile.d/sonarrc.sh
- sonar-scanner -Dsonar.analysis.mode=preview -Dsonar.gitlab.commit_sha=$CI_BUILD_REF -Dsonar.gitlab.ref_name=$CI_BUILD_REF_NAME -Dsonar.gitlab.project_id=$CI_PROJECT_ID
except:
- develop
tags:
- yx-gitlab-runner
運(yùn)行結(jié)果
非develop/master分支的代碼修改觸發(fā)的分析
develop/master分支的代碼修改觸發(fā)的分析
參考
https://docs.gitlab.com/runner/register/
https://docs.gitlab.com/ee/ci/yaml/README.html
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
http://blog.csdn.net/aixiaoyang168/article/details/72168834
http://blog.csdn.net/aixiaoyang168/article/details/78115646