1
您現在的位置:
首頁
/
/
集成(chéng)gitlab、Jenkins與Sonar實現代碼自動檢查

集成(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ò)程大緻爲以下步驟:

  1. 提交java項目代碼至gitlab

  2. gitlab通過(guò)webhook自動觸發(fā)jenkins執行任務

  3. jenkins獲取代碼,執行sonar分析代碼。

  4. 在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。

  1. 在終端中運行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鉑金級合作夥伴

掃二維碼用手機看

更多資訊

聯系我們

聯系我們

發(fā)布時(shí)間:2020-09-16 13:55:16
地址:蘇州市工業園區新平街388号
          騰飛創新園塔樓A617
電話:400-028-4008
          0512-62382981

關注我們

這(zhè)是描述信息

頁面(miàn)版權所有 -  蘇州華克斯信息科技有限公司  |  Copyright - 2020 All Rights Reserved.