SonarQube (終) Gitlab提交代碼自動(dòng)化測試

SonarQube系列 目錄


整體架構(gòu)圖

架構(gòu)圖.png
  1. 軟件開發(fā)工程師提交代碼至Gitlab抓狭;
  2. 觸發(fā)Gitlab-CI聪建,啟動(dòng)gitlab-runner Docker鏡像準(zhǔn)備運(yùn)行測試送挑;
  3. Gitlab-CI觸發(fā)sonar_runner Docker鏡像啟動(dòng)屯远,并進(jìn)行代碼分析;
  4. 代碼分析結(jié)果在commit記錄作一次comment颤绕;
  5. Gitlab管理員合并代碼至develop或master分支诅炉;
  6. 觸發(fā)Gitlab-CI蜡歹,啟動(dòng)gitlab-runner Docker鏡像準(zhǔn)備運(yùn)行測試屋厘;
  7. Gitlab-CI觸發(fā)sonar_runner Docker鏡像啟動(dòng)涕烧,并進(jìn)行代碼分析;
  8. 代碼分析結(jié)果保存至SonarQube平臺(tái)數(shù)據(jù)庫中汗洒;
  9. 測試/開發(fā)組等用戶訪問SonarQube網(wǎng)頁议纯,查看分析的具體結(jié)果。

具體配置過程

sonar-scanner Docker鏡像配置

sonar-scanner Docker鏡像主要工作:

  1. 拉取代碼溢谤;
  2. 運(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 token.png

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

配置gitlab插件.png

創(chuàng)建gitlab-ci.yml配置文件

以下為實(shí)現(xiàn)兩種Pipline流程的yml文件:

  1. Sonar_Analyze流程,執(zhí)行sonar-scanner操作绑青,直接將分析結(jié)果保存至SonarQube server中诬像;
  2. 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ā)的分析

提交代碼結(jié)果1.png

develop/master分支的代碼修改觸發(fā)的分析

提交代碼結(jié)果2.png

參考

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末邪乍,一起剝皮案震驚了整個(gè)濱河市降狠,隨后出現(xiàn)的幾起案子对竣,更是在濱河造成了極大的恐慌,老刑警劉巖榜配,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件否纬,死亡現(xiàn)場離奇詭異,居然都是意外死亡蛋褥,警方通過查閱死者的電腦和手機(jī)临燃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烙心,“玉大人膜廊,你說我怎么就攤上這事∫穑” “怎么了爪瓜?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長匙瘪。 經(jīng)常有香客問我铆铆,道長,這世上最難降的妖魔是什么辆苔? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任算灸,我火速辦了婚禮,結(jié)果婚禮上驻啤,老公的妹妹穿的比我還像新娘菲驴。我一直安慰自己,他們只是感情好骑冗,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布赊瞬。 她就那樣靜靜地躺著,像睡著了一般贼涩。 火紅的嫁衣襯著肌膚如雪巧涧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天遥倦,我揣著相機(jī)與錄音谤绳,去河邊找鬼。 笑死袒哥,一個(gè)胖子當(dāng)著我的面吹牛缩筛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播堡称,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼瞎抛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了却紧?” 一聲冷哼從身側(cè)響起桐臊,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胎撤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后断凶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伤提,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年懒浮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了飘弧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡砚著,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出痴昧,到底是詐尸還是另有隱情稽穆,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布赶撰,位于F島的核電站舌镶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏豪娜。R本人自食惡果不足惜餐胀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘤载。 院中可真熱鬧否灾,春花似錦、人聲如沸鸣奔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挎狸。三九已至扣汪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锨匆,已是汗流浹背崭别。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恐锣,地道東北人茅主。 一個(gè)月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像侥蒙,于是被迫代替她去往敵國和親暗膜。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理鞭衩,服務(wù)發(fā)現(xiàn)学搜,斷路器娃善,智...
    卡卡羅2017閱讀 134,699評論 18 139
  • DevOps是Development和Operations的組合,是一種方法論瑞佩,是一組過程聚磺、方法與系統(tǒng)的統(tǒng)稱,用于...
    DongGuangqing閱讀 2,322評論 1 7
  • GitLab-CI就是一套配合GitLab使用的持續(xù)集成系統(tǒng)炬丸。 OS X系統(tǒng)完成可出現(xiàn)集成瘫寝,需要安裝gitlab,...
    paradisery閱讀 4,424評論 7 7
  • <<互聯(lián)網(wǎng)敏捷DevOps和自動(dòng)化之5.持續(xù)集成>>持續(xù)集成的價(jià)值是什么稠炬?對于開發(fā)和測試人員又意味著什么呢焕阿?1.1...
    燕京博士閱讀 2,792評論 0 5
  • 爸爸:“兒子你覺得爸爸壯嗎?” 兒:“嗯首启∧郝牛” 爸爸:“你覺得少林功夫厲害嗎?” 兒子:“厲害毅桃“伲” 爸爸:“如果我剃...
    Wendyzhen閱讀 221評論 0 0