Jenkins+SonarQube+Gitlab搭建自動化持續(xù)代碼掃描質(zhì)量平臺2020-03-18

前言

本篇文章主要介紹的是Jenkins+SonarQube+Gitlab搭建自動化持續(xù)代碼掃描質(zhì)量平臺的集成舌狗。

博客之前已經(jīng)有關于Jenkins叽奥、SonarQube、Gitlab分別安裝的文章痛侍,本文主要說明三種平臺集成使用朝氓,實現(xiàn)代碼持續(xù)集成與自動化部署。

一主届、jenkins集成gitlab

jenkins中添加gitlab插件赵哲,選擇直接安裝,然后服務器中重啟jenkins君丁。

image

image
gitlab中生成AccessToken

打開gitlab枫夺,在gitlab中用戶設置—>訪問令牌選項中生成token,scope為第一個等級:api

image

image
jenkins中添加gitlab中生成的token

1.打開jenkins,在Jenkins添加全局憑據(jù)绘闷,類型為APIToken

image

image

2.使用Test connection驗證添加成功


image

安裝中可能出現(xiàn)的問題:
Manage Jenkins—>出現(xiàn)紅色報錯信息 pluginname is missing. To fix, install v** or later. 插件所依賴的其他插件橡庞,需要自己安裝。
解決方案:http://updates.jenkins-ci.org/download/plugins/中搜索報錯信息中對應的pluginname印蔗, 選擇合適的版本下載扒最,然后手動上傳。最后服務器中使用systemctl restart jenkins.service 重啟Jenkins

image

至此喻鳄,Jenkins集成gitlab完成扼倘,接下來集成sonarqub后,將使用demo一起進行演示除呵。

二、jenkins集成sonarqube

1.打sonarqube,點擊Administrator->security->user爪喘,點擊token按鈕颜曾,輸入key后再點擊generate進行生成,復制該token。

image

image

2.打Jenkins秉剑,Jenkins中安裝插件 SonarQube-scanner(插件版本為2.6.1)泛豪,插件可在http://updates.jenkins-ci.org/download/plugins/ 中下載,瀏覽器中ctrl+f,搜索sonar。然后在Manage Jenkins-->Manage Plugins-->高級中诡曙,上傳插件臀叙,重啟Jenkins。

3.在系統(tǒng)管理->系統(tǒng)設置中价卤,找到SonarQube servers模塊劝萤,填寫服務器信息

image

4.加載JDK與Sonar-scanner全局配置,jdk安裝目錄為Jenkins中jdk的安裝目錄,如果有默認配置慎璧,需要先刪除床嫌。

image

image

image

三、demo測試

gitlab部分

1.進入gitlab首頁胸私,創(chuàng)建群組


image

image

2.在群組中創(chuàng)建一個項目

image

image

3.復制該項目的gitlab地址


image

4.打開資源管理器厌处,新建一個文件夾作為 Git 代碼存放位置,進入該新建文
件夾后在空白處單擊鼠標右鍵岁疼,選擇“Git 克隆…”阔涉;


image

5.可能會有彈窗,要求輸入gitlab的賬號密碼捷绒,輸入即可洒敏。


image

6.克隆完成后,點擊關閉按鈕


image

image

7.上傳代碼測試疙驾,進入【demo】文件夾凶伙,將一份代碼復制至該目錄下;


image

8.在空白處單擊鼠標右鍵它碎,選擇“Git 同步…”函荣,在彈出的“Git 同步–TortoiseGit”對話框中點擊“拉取(P)”按鈕,同步項目在 Gitlab 服務器的版本扳肛;


image

image

image

9.在空白處單擊鼠標右鍵傻挂,選擇“Git 提交(C) ->”master”…”;


image

image

10.待提交成功后挖息,點擊“推送(H)”按鈕金拒,并在彈出的“推送 –TortoiseGit”對話框中勾選“推送所有分支(P)”,單擊“確定”按鈕完成代碼推送套腹;


image

image

11.刷新gitlab頁面绪抛,發(fā)現(xiàn)上傳成功。


image

jenkins部分

PS:此實例目標為實現(xiàn) Gitlab 中【demo】項目更新代碼時电禀, Jenkins 同步更新代
碼并完成自動化部署幢码。

1.登錄jenkins,單擊左側主菜單中的“新建 Item”按鈕尖飞,進入新建任務向?qū)?


image

2.輸入任務名稱“demo”症副,選擇“Freestyle project”后點擊確定店雅;


image

3.點擊“源碼管理”標簽,選擇“Git”單選框贞铣,輸入【demo】項目克隆鏈接闹啦,在“Credentials”單選框中添加憑證,然后選擇該憑證辕坝;


image

添加憑證窍奋;


image

4.配置 Webhook,點擊“構建觸發(fā)器”標簽圣勒,勾選“Build when a change is pushed to GitLab. GitLab webhook URL:...”费变,并點擊彈出菜單中的“高級…”按鈕;


image

5.點擊"Secret token"標簽右側的"Generate"按鈕生成 Token 密鑰圣贸,記錄該密鑰及該工程在 Jenkins中的URL(分別在如下圖"2"挚歧、"3"所示位置),點擊“保存”按鈕完成工程配置吁峻。


image

6.登錄 Gitlab 并進入【demo】項目滑负,點擊左側菜單中“設置-集成”標簽;


image

7.在 URL 中鍵入剛剛獲取到的 Jenkins 工程 URL 及 Token 密鑰用含,點擊"Add webhook"按鈕完成 Gitlab 中【demo】項目配置矮慕;


image

8.出現(xiàn)【urlis blocked:Requests to the local network are not allowed】錯誤


image

解決方案:
gitlab 10.6 版本以后為了安全,不允許向本地網(wǎng)絡發(fā)送webhook請求啄骇,如果想向本地網(wǎng)絡發(fā)送webhook請求痴鳄,則需要使用管理員帳號登錄,默認管理員帳號是root或者admin@example.com缸夹,密碼就是你gitlab搭建好之后第一次輸入的密碼痪寻,登錄之后,走下圖步驟:

image

重新走第六虽惭、七步驟橡类。

9.向下滾動右側拖動條可見新建的 Webhook,點擊右側“Test”下拉框芽唇,選擇“Push events”測試 Webhook 配置顾画,如顯示 Hook executedsuccessfully: HTTP 200 即表明 Webhook 配置成功;


image

image

10.重新切換到 Jenkins【demo】工程中可見 Jenkins 已成功響應 Gitlab的 Push 事件匆笤;


image

11.Push測試
打開資源管理器研侣,進入【demo】項目文件夾,新建一個文本文檔疚膊;


image

在空白位置單擊鼠標右鍵選擇“Git 同步”并在彈出對話框中完成服務器代碼版本拉取;
同步服務器代碼版本后單擊鼠標右鍵選擇"Git 提交(C) ->"master"…"并在彈出對話框中完成變更提交


image

image

image

12.在 Jenkins 成功看到 Push 事件即表明 Jenkins 配置成功;


image

jenkins集成sonarqube部分

ps:此教程對 SonarQube 的使用全部基于 Jenkins 平臺义辕;
1.打開瀏覽器通過任意鏈接訪問Jenkins,進入Jenkins主頁寓盗;點擊【demo】項目進入項目主頁灌砖;


image

2.點擊左側菜單欄“配置”按鈕進入項目配置;


image

3.點擊"構建觸發(fā)器"標簽傀蚌,在"構建"一欄中點擊"增加構建步驟"下拉框基显,選擇"Execute SonarQube Scanner";


image

4.在彈出的“Execute SonarQube Scanner”頁面中填入以下 Analysis properties 信息后單擊“保存”按鈕完成項目配置善炫;

# 項目標識符撩幽,在給定的 SonarQube 中必須是唯一的
sonar.projectKey=lxgblog:demo
# 項目名稱,這是 SonarQube 中顯示的名稱
sonar.projectName=demo
# 項目版本號
sonar.projectVersion=1.0
# 以下定義可在項目根目錄新建 sonar-project.properties 文件箩艺, SonarQube 會默認讀取該文件窜醉,
# 指定工程源文件所在的目錄, "./"可表示根目錄艺谆,在 Windows 系統(tǒng)使用時注意用"/"代替"\"
sonar.sources=./src
# 針對 JAVA 工程榨惰,需要指定 class 文件所在的目錄
sonar.java.binaries=./target/classes
# 指定工程編程語言
sonar.language=java
# 指定工程字符編碼
sonar.sourceEncoding=UTF-8
image

5.Build 測試,回到【demo】項目主頁,單擊左側菜單欄“Build Now”按鈕進行代碼編
譯静汤,可以在 Build History 中實時看到編譯過程,編譯完成后會生成一個新的構建歷史#4
(ps:#3被我刪了);

6.點擊“#4”按鈕進入 4 號構建過程琅催,點擊左側菜單欄“控制臺輸出”按鈕可以看到本次項目構建的詳細過程(有興趣的可以看看整個工程構建及代碼分析過程);


image

image

image

7.回到【demo】項目主頁虫给,點擊左側菜單欄"SonarQube"按鈕將跳轉(zhuǎn)到SonarQube 項目名為【demo】的主頁即可看到代碼分析的結果藤抡;


image

image

CSDN:https://blog.csdn.net/qq_27682773
簡書:http://www.reibang.com/u/e99381e6886e
博客園:https://www.cnblogs.com/lixianguo
個人博客:https://www.lxgblog.com

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市抹估,隨后出現(xiàn)的幾起案子缠黍,更是在濱河造成了極大的恐慌,老刑警劉巖药蜻,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓷式,死亡現(xiàn)場離奇詭異,居然都是意外死亡蒿往,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門颊埃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饥漫,“玉大人,你說我怎么就攤上這事”瘢” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵井濒,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么窥岩? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上镊尺,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般划栓。 火紅的嫁衣襯著肌膚如雪奋姿。 梳的紋絲不亂的頭發(fā)上素标,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天称诗,我揣著相機與錄音寓免,去河邊找鬼蜈首。 笑死辣卒,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的睛榄。 我是一名探鬼主播计露,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼憎乙!你這毒婦竟也來了票罐?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤泞边,失蹤者是張志新(化名)和其女友劉穎该押,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阵谚,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡蚕礼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了梢什。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奠蹬。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嗡午,靈堂內(nèi)的尸體忽然破棺而出囤躁,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布狸演,位于F島的核電站言蛇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宵距。R本人自食惡果不足惜腊尚,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望满哪。 院中可真熱鬧婿斥,春花似錦、人聲如沸翩瓜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兔跌。三九已至,卻和暖如春峡蟋,著一層夾襖步出監(jiān)牢的瞬間坟桅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工蕊蝗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留仅乓,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓蓬戚,卻偏偏與公主長得像夸楣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子子漩,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

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