前言
本篇文章主要介紹的是Jenkins+SonarQube+Gitlab搭建自動化持續(xù)代碼掃描質(zhì)量平臺的集成舌狗。
博客之前已經(jīng)有關于Jenkins叽奥、SonarQube、Gitlab分別安裝的文章痛侍,本文主要說明三種平臺集成使用朝氓,實現(xiàn)代碼持續(xù)集成與自動化部署。
一主届、jenkins集成gitlab
jenkins中添加gitlab插件赵哲,選擇直接安裝,然后服務器中重啟jenkins君丁。
gitlab中生成AccessToken
打開gitlab枫夺,在gitlab中用戶設置—>訪問令牌選項中生成token,scope為第一個等級:api
jenkins中添加gitlab中生成的token
1.打開jenkins,在Jenkins添加全局憑據(jù)绘闷,類型為APIToken
2.使用Test connection驗證添加成功
安裝中可能出現(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
至此喻鳄,Jenkins集成gitlab完成扼倘,接下來集成sonarqub后,將使用demo一起進行演示除呵。
二、jenkins集成sonarqube
1.打sonarqube,點擊Administrator->security->user爪喘,點擊token按鈕颜曾,輸入key后再點擊generate進行生成,復制該token。
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模塊劝萤,填寫服務器信息
4.加載JDK與Sonar-scanner全局配置,jdk安裝目錄為Jenkins中jdk的安裝目錄,如果有默認配置慎璧,需要先刪除床嫌。
三、demo測試
gitlab部分
1.進入gitlab首頁胸私,創(chuàng)建群組
2.在群組中創(chuàng)建一個項目
3.復制該項目的gitlab地址
4.打開資源管理器厌处,新建一個文件夾作為 Git 代碼存放位置,進入該新建文
件夾后在空白處單擊鼠標右鍵岁疼,選擇“Git 克隆…”阔涉;
5.可能會有彈窗,要求輸入gitlab的賬號密碼捷绒,輸入即可洒敏。
6.克隆完成后,點擊關閉按鈕
7.上傳代碼測試疙驾,進入【demo】文件夾凶伙,將一份代碼復制至該目錄下;
8.在空白處單擊鼠標右鍵它碎,選擇“Git 同步…”函荣,在彈出的“Git 同步–TortoiseGit”對話框中點擊“拉取(P)”按鈕,同步項目在 Gitlab 服務器的版本扳肛;
9.在空白處單擊鼠標右鍵傻挂,選擇“Git 提交(C) ->”master”…”;
10.待提交成功后挖息,點擊“推送(H)”按鈕金拒,并在彈出的“推送 –TortoiseGit”對話框中勾選“推送所有分支(P)”,單擊“確定”按鈕完成代碼推送套腹;
11.刷新gitlab頁面绪抛,發(fā)現(xiàn)上傳成功。
jenkins部分
PS:此實例目標為實現(xiàn) Gitlab 中【demo】項目更新代碼時电禀, Jenkins 同步更新代
碼并完成自動化部署幢码。
1.登錄jenkins,單擊左側主菜單中的“新建 Item”按鈕尖飞,進入新建任務向?qū)?
2.輸入任務名稱“demo”症副,選擇“Freestyle project”后點擊確定店雅;
3.點擊“源碼管理”標簽,選擇“Git”單選框贞铣,輸入【demo】項目克隆鏈接闹啦,在“Credentials”單選框中添加憑證,然后選擇該憑證辕坝;
添加憑證窍奋;
4.配置 Webhook,點擊“構建觸發(fā)器”標簽圣勒,勾選“Build when a change is pushed to GitLab. GitLab webhook URL:...”费变,并點擊彈出菜單中的“高級…”按鈕;
5.點擊"Secret token"標簽右側的"Generate"按鈕生成 Token 密鑰圣贸,記錄該密鑰及該工程在 Jenkins中的URL(分別在如下圖"2"挚歧、"3"所示位置),點擊“保存”按鈕完成工程配置吁峻。
6.登錄 Gitlab 并進入【demo】項目滑负,點擊左側菜單中“設置-集成”標簽;
7.在 URL 中鍵入剛剛獲取到的 Jenkins 工程 URL 及 Token 密鑰用含,點擊"Add webhook"按鈕完成 Gitlab 中【demo】項目配置矮慕;
8.出現(xiàn)【urlis blocked:Requests to the local network are not allowed】錯誤
解決方案:
gitlab 10.6 版本以后為了安全,不允許向本地網(wǎng)絡發(fā)送webhook請求啄骇,如果想向本地網(wǎng)絡發(fā)送webhook請求痴鳄,則需要使用管理員帳號登錄,默認管理員帳號是root或者admin@example.com缸夹,密碼就是你gitlab搭建好之后第一次輸入的密碼痪寻,登錄之后,走下圖步驟:
重新走第六虽惭、七步驟橡类。
9.向下滾動右側拖動條可見新建的 Webhook,點擊右側“Test”下拉框芽唇,選擇“Push events”測試 Webhook 配置顾画,如顯示 Hook executedsuccessfully: HTTP 200 即表明 Webhook 配置成功;
10.重新切換到 Jenkins【demo】工程中可見 Jenkins 已成功響應 Gitlab的 Push 事件匆笤;
11.Push測試
打開資源管理器研侣,進入【demo】項目文件夾,新建一個文本文檔疚膊;
在空白位置單擊鼠標右鍵選擇“Git 同步”并在彈出對話框中完成服務器代碼版本拉取;
同步服務器代碼版本后單擊鼠標右鍵選擇"Git 提交(C) ->"master"…"并在彈出對話框中完成變更提交
12.在 Jenkins 成功看到 Push 事件即表明 Jenkins 配置成功;
jenkins集成sonarqube部分
ps:此教程對 SonarQube 的使用全部基于 Jenkins 平臺义辕;
1.打開瀏覽器通過任意鏈接訪問Jenkins,進入Jenkins主頁寓盗;點擊【demo】項目進入項目主頁灌砖;
2.點擊左側菜單欄“配置”按鈕進入項目配置;
3.點擊"構建觸發(fā)器"標簽傀蚌,在"構建"一欄中點擊"增加構建步驟"下拉框基显,選擇"Execute SonarQube Scanner";
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
5.Build 測試,回到【demo】項目主頁,單擊左側菜單欄“Build Now”按鈕進行代碼編
譯静汤,可以在 Build History 中實時看到編譯過程,編譯完成后會生成一個新的構建歷史#4
(ps:#3被我刪了);
6.點擊“#4”按鈕進入 4 號構建過程琅催,點擊左側菜單欄“控制臺輸出”按鈕可以看到本次項目構建的詳細過程(有興趣的可以看看整個工程構建及代碼分析過程);
7.回到【demo】項目主頁虫给,點擊左側菜單欄"SonarQube"按鈕將跳轉(zhuǎn)到SonarQube 項目名為【demo】的主頁即可看到代碼分析的結果藤抡;
CSDN:https://blog.csdn.net/qq_27682773
簡書:http://www.reibang.com/u/e99381e6886e
博客園:https://www.cnblogs.com/lixianguo
個人博客:https://www.lxgblog.com