集成(chéng)gitlab、Jenkins與Sonar實現代碼自動檢查
- 分類:新聞資訊
- 作者:蘇州華克斯信息科技有限公司
- 來源:蘇州華克斯信息科技有限公司
- 發(fā)布時(shí)間:2023-05-16
- 訪問量:0
【概要描述】
集成(chéng)gitlab、Jenkins與Sonar實現代碼自動檢查
【概要描述】
- 分類:新聞資訊
- 作者:蘇州華克斯信息科技有限公司
- 來源:蘇州華克斯信息科技有限公司
- 發(fā)布時(shí)間:2023-05-16
- 訪問量:0
前言
在項目的開(kāi)發(fā)過(guò)程中,爲了保證代碼的質量便于後(hòu)期的代碼維護,需要遵循統一的代碼規範。但是通過(guò)人工逐一查看代碼去檢查費時(shí)費力,使用jenkins結合sonar可以實現代碼的自動檢查。
本文中自動分析過(guò)程大緻爲以下步驟:
-
提交java項目代碼至gitlab
-
gitlab通過(guò)webhook自動觸發(fā)jenkins執行任務
-
jenkins獲取代碼,執行sonar分析代碼。
-
在sonar的服務器界面(miàn)查看分析結果
下面(miàn)的示例中,jenkins版本爲2.121.3,gitlab版本爲10.0.2-ce,SonarQube版本爲7.4,如果使用的版本不一緻可能(néng)會(huì)有部分設置差異。
安裝部署
部署jenkins
這(zhè)裡(lǐ)采用docker的方式部署jenkins。
-
在終端中運行docker命令,使用jenkinsci/blueocean鏡像運行容器。
2.訪問 http://localhost:8080 地址,等待出現下面(miàn)解鎖界面(miàn)。
3.使用docker logs 命令從日志信息中 複制自動生成(chéng)的密碼(在兩(liǎng)組星号之間)。
4.在 解鎖Jenkins 頁面(miàn), 粘貼密碼并繼續。
5.解鎖jenkins後(hòu),在界面(miàn)中選擇“安裝建議的插件”。
6.最後(hòu),jenkins要求創建管理員用戶。創建新用戶或使用admin用戶,按照步驟完成(chéng)後(hòu)即可登錄使用jenkis了。
部署SonarQube
這(zhè)裡(lǐ)采用docker的方式部署SonarQube
1.在終端中運行docker命令,使用sonarqube鏡像運行容器。
2.訪問 http://localhost:9000 地址,等待出現下面(miàn)界面(miàn)。點擊“log in”,并使用默認用戶和密碼 admin / admin登錄。
3.登錄後(hòu)按照下圖中步驟,生成(chéng)訪問token。
生成(chéng)token
配置jenkins任務
安裝sonar插件,并創建jenkins任務。
jenkins中安裝sonar插件
jenkins中要實現代碼掃描,需要在jenkins中安裝SonarQube Scanner插件。從jenkins的“系統管理”-“管理插件”中找到SonarQube Scanner插件并下載安裝,重啓jenkins後(hòu)生效。
選擇sonar插件
安裝插件
jenkins中配置sonar插件
在jenkins中,進(jìn)入“系統管理”-“系統設置”-“SonarQube servers”配置。勾上“Enable injection of SonarQube server configuration ...”選項,輸入“Name”、“Server URL”以及“Server authentication token”。token爲前面(miàn)部署sonarqube服務器時(shí)創建的token。
設置sonar server
進(jìn)入“系統管理”-“全局工具配置”-“SonarQube Scanner”,點擊“SonarQube Scanner 安裝”并配置SonarQube Scanner。
增加sonar scanner
同樣如果未配置maven,進(jìn)入“系統管理”-“全局工具配置”-“Maven”,配置maven。
添加maven
新建maven任務
點擊“新建任務”,輸入名稱并選擇“maven項目”,然後(hòu)點擊确定。如果沒(méi)有“maven項目”可以選擇,請先至插件管理中安裝“Maven Integration”插件。
新建maven任務
配置maven任務
進(jìn)入任務的配置界面(miàn),在源碼管理設置部分,選擇“Git”,配置好(hǎo)工程的git地址以及獲取代碼的憑證信息。然後(hòu)在“Additional Behaviours”中添加“Clean before checkout”。可以根據自己的需要在“Branches to build”中設置所需要獲取的代碼分支。
源碼管理
在“構建環境”配置中勾選“Prepare SonarQube Scanner environment”。
構建環境
在“Post Steps”中點擊“Add post-build step”,添加“Execute SonarQube Scanner”。
添加Execute SonarQube Scanner步驟
在“Task to run”中輸入scan,即分析代碼。在“Analysis properties”中輸入下面(miàn)内容。sonar.language 指定了要分析的開(kāi)發(fā)語言(特定的開(kāi)發(fā)語言對(duì)應了特定的規則),sonar.sources 定義了需要分析的源代碼位置(示例中的$WORKSPACE 所指示的是當前 Jenkins 項目的目錄),sonar.java.binaries 定義了需要分析代碼的編譯後(hòu) class 文件位置;sonar.java.source 指定java版本。
配置Execute SonarQube Scanner步驟
測試jenkins任務
在創建的jenkins任務中,點擊“立即構建”即可立即執行sonar任務。
立即構建
執行成(chéng)功後(hòu),打開(kāi)sonarqube的地址,即可看到代碼檢查結果。
代碼檢查結果
設置gitlab自動觸發(fā)jenkins
前面(miàn)的步驟中已經(jīng)完成(chéng)了手動執行jenkins執行sonar任務完成(chéng)構建部署任務,下面(miàn)說(shuō)明如何在代碼提交後(hòu)讓gitlab自動觸發(fā)jenkins執行sonar任務。
jenkins中安裝gitlab插件
要實現gitlab自動觸發(fā)jenkins任務,需要在jenkins中安裝gitlab插件。從jenkins的“系統管理”-“管理插件”中找到gitlab插件并下載安裝,重啓jenkins後(hòu)生效。
選擇gitlab插件
安裝gitlab插件
在gitlab中創建訪問token
安裝的gitlab插件在配置時(shí),需要gitlab的訪問token,先要在gitlab中創建訪問的token。點擊“用戶設置”-“Access Tokens”菜單,進(jìn)入訪問token設置界面(miàn)。然後(hòu)輸入“Name”,并在“Scopes”中勾選“api”,點擊“Create ...”按鈕即可創建訪問token。創建成(chéng)功後(hòu),一定要將(jiāng)生成(chéng)的token保存下來,後(hòu)面(miàn)將(jiāng)無法再查看生成(chéng)的token,如果未保存後(hòu)面(miàn)隻能(néng)重新生成(chéng)。
創建token
token創建成(chéng)功
jenkins中配置gitlab插件
在jenkins中,進(jìn)入“系統管理”-“系統設置”-“Gitlab”配置。
jenkins系統設置
輸入“Connection name”、“Gitlab host URL”,在“Credentials”中點擊“Add”添加gitlab的授權token。
配置gitlab
點擊添加後(hòu),會(huì)進(jìn)入添加憑據界面(miàn)。在添加界面(miàn),選擇類型爲“GitLab API token”,API token設置爲前面(miàn)在gitlab中創建的token值。然後(hòu)點擊“添加”按鈕創建憑據。
添加gitlab api token
添加完gitlab api token,在Gitlab設置界面(miàn)“Credentials”中選擇前面(miàn)添加的token,然後(hòu)點擊“Test Connection”測試是否成(chéng)功。測試成(chéng)功後(hòu)保存。
測試連接
配置jenkins任務,啓用觸發(fā)器
進(jìn)入jenkins的任務設置界面(miàn),在“構建觸發(fā)器”中,勾上“Build when a change pushed to Gitlab.Gitlab webhook URL ...”(這(zhè)裡(lǐ)的webhook URL在後(hòu)面(miàn)配置gitlab時(shí)需要),根據自己的需要設置其它的選項。點擊“高級”按鈕,然後(hòu)點擊“Generate”按鈕生成(chéng)Secret token(這(zhè)裡(lǐ)的token後(hòu)面(miàn)配置gitlab時(shí)需要)。
啓用gitlab觸發(fā)
生成(chéng)Secret token
在gitlab中配置webhook
在gitlab的項目設置中選擇“Integrations”,然後(hòu)在URL和Secret token中填入上一步jenkins設置中的到的内容。由于每次代碼提交到gitlab後(hòu)都(dōu)觸發(fā)jenkins執行任務,所以這(zhè)裡(lǐ)勾選“Push events”,然後(hòu)去掉“Enable SSL verification”的勾選項,并點擊“Add webhook”按鈕添加。
gitlab配置webhook
webhook測試
添加完成(chéng)後(hòu),在下面(miàn)可以看到剛才添加的webhook,點擊“Test”按鈕在彈出的菜單中選擇“Push events”發(fā)送測試請求,發(fā)送成(chéng)功後(hòu)會(huì)顯示“Hook executed successfully”信息。
push Test
push成(chéng)功
webhook發(fā)送成(chéng)功後(hòu),到jenkins中可以看到正在執行觸發(fā)的任務。配置成(chéng)功後(hòu),後(hòu)面(miàn)隻要有git的tag提交到gitlab即可直接觸發(fā)jenkins執行sonar任務。
webhook觸發(fā)執行
專業的測試及安全産品服務提供商
LoadRunner | Fortify | SonarQube | AppScan | WebInspect
FossEye開(kāi)源安全與合規治理平台 | 極狐GitLab一體化 DevOps平台
CMA/CNAS軟件評測實驗室解決方案 | 源代碼安全審計服務
OpenText(MicroFocus)中國(guó)區鉑金代理商 | SonarQube中國(guó)區總代理商
AppScan中國(guó)區核心代理商 | 極狐GitLab鉑金級合作夥伴
掃二維碼用手機看
更多資訊