前言
強化代碼質量,加速軟件交付!Jenkins 攜手 SonarQube,與華為云 Flexus X 云服務器強強聯(lián)合,打造自動化代碼質量監(jiān)控新生態(tài)。Flexus X 以其靈活的算力配置、卓越的性能表現(xiàn),為 Jenkins 與 SonarQube 的集成部署提供強大支撐。在 Flexus X 的助力下,自動化代碼掃描與質量問題即時反饋成為可能,顯著提升團隊開發(fā)效率與軟件質量。立即體驗華為云 828 企業(yè)上云節(jié)優(yōu)惠,讓 Jenkins 與 SonarQube 的集成部署更加順暢,共同守護您的代碼質量,加速軟件交付周期!
SonarQube 介紹
SonarQube 是一款用于代碼質量管理的開源工具,它采用 B/S 架構,主要用于管理源代碼的質量。 通過 SonarQube 我們可以檢測出項目中重復代碼, 潛在 bug, 代碼規(guī)范,安全性漏洞等問題, 并通過 SonarQube web UI 展示出來。
SonarQube 環(huán)境搭建
需要了解:
采用 docker 方式進行部署 SonarQube 代碼質量管理的開源工具
詳細購買配置實例可參考文章:快速部署華為云FlexusX實例,開啟您的云端之旅
部署 docker 服務請參考文章:華為FlexusX與Docker+Nginx的高效整合之路
SonarQube 的安裝
SonarQube 在 7.9 版本中已經(jīng)放棄了對 MySQL 的支持,并且建議在商業(yè)環(huán)境中采用 PostgreSQL,那么安裝 SonarQube 時需要依賴 PostgreSQL。
并且這里會安裝 SonarQube 的長期支持版本8.9
拉取鏡像
[root@flexusx-251f~]#dockerpullpostgres
[root@flexusx-251f~]#dockerpullsonarqube:8.9.3-community
#創(chuàng)建目錄
[root@flexusx-251f~]#mkdir/sonarqube
[root@flexusx-251f~]#cd/sonarqube/
編寫 docker-compose.yaml 文件
version:"2.29.1"
services:
db:
image:postgres#指定鏡像
container_name:postgres_db#指定容器名稱
ports:
-5432:5432#映射端口到宿主機,以從外部訪問數(shù)據(jù)庫
networks:
-sonarnet#連接到 sonarnet 網(wǎng)絡
environment:
POSTGRES_USER:sonar#創(chuàng)建數(shù)據(jù)庫
POSTGRES_PASSWORD:sonar#數(shù)據(jù)庫密碼
sonarqube:
image:sonarqube:8.9.3-community#指定鏡像
container_name:sonarqube#指定容器名稱
depends_on:
-db#指定服務
ports:
-"9000:9000"#映射端口到宿主機,以便可以從外部訪問 SonarQube。
networks:
-sonarnet#連接到 sonarnet 網(wǎng)絡
environment:
SONAR_JDBC_URL:jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME:sonar
SONAR_JDBC_PASSWORD:sonar
networks:
sonarnet:
driver:bridge#創(chuàng)建橋接網(wǎng)絡
配置 sysctl.conf 文件信息。設置 vm.max_map_count
[root@flexusx-251fsonarqube]#vim/etc/sysctl.conf
#在最后添加一行vm.max_map_count
[root@flexusx-251fsonarqube]#cat/etc/sysctl.conf
...
vm.max_map_count=262144
#刷新
[root@flexusx-251fsonarqube]#sysctl-p
vm.swappiness=0
net.ipv4.tcp_max_tw_buckets=5000
net.ipv4.tcp_max_syn_backlog=1024
vm.max_map_count=262144
啟動容器
[root@flexusx-251fsonarqube]#docker-composeup-d
WARN[0000]/sonarqube/docker-compose.yaml:theattribute`version`isobsolete,itwillbeignored,pleaseremoveittoavoidpotentialconfusion
[+]Running3/3
?Networksonarqube_sonarnetCreated0.0s
?Containerpostgres_dbStarted0.2s
?ContainersonarqubeStarted0.3s
[root@flexusx-251fsonarqube]#docker-composels
NAMESTATUSCONFIGFILES
sonarquberunning(2)/sonarqube/docker-compose.yaml
### 訪問 SonarQube 首頁
放行安全組 9000,5432
訪問地址:http://主機 ip:9000
登錄用戶名和密碼均為 admin
登錄成功進行密碼修改
進入 Sonar Qube首頁
安裝中文插件
我同意風險,并點擊安裝
安裝成功后,會查看到重啟按鈕,點擊即可
Jenkins 集成 Sonar Qube
Jenkins 繼承 Sonar Qube 實現(xiàn)代碼掃描需要先下載整合插件
Jenkins 安裝插件
下載 Sonar Qube 插件
安裝成功
Sonar-scanner 實現(xiàn)代碼檢測****
下載 Sonar-scanner:https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/scanners/sonarscanner/
下載 4.6.x 版本即可,要求 Linux 版本
我們直接在/Jenkins/data 目錄進行安裝,因為我們將主機的/jenkins/data 目錄掛在給了容器的/var/jenkins_home/目錄
[root@flexusx-251f~]# mkdir /jenkins/data/sonar-scanner
[root@flexusx-251f~]# cd /jenkins/data/sonar-scanner
# 上傳軟件包
[root@flexusx-251fsonar-scanner]# ls
sonar-scanner-cli-4.6.2.2472-linux.zip
解壓軟件包
[root@flexusx-251fsonar-scanner]# unzip sonar-scanner-cli-4.6.2.2472-linux.zip
配置 sonarQube 服務端地址,修改 conf 下的 sonar-scanner.properties
[root@flexusx-251fsonar-scanner]# ls
sonar-scanner-4.6.2.2472-linuxsonar-scanner-cli-4.6.2.2472-linux.zip
[root@flexusx-251fsonar-scanner]# cd sonar-scanner-4.6.2.2472-linux/
[root@flexusx-251fsonar-scanner-4.6.2.2472-linux]# ls
binconf jre lib
[root@flexusx-251fsonar-scanner-4.6.2.2472-linux]# cd conf/
[root@flexusx-251fconf]# ls
sonar-scanner.properties
[root@flexusx-251fconf]# vim sonar-scanner.properties
[root@flexusx-251fconf]# cat sonar-scanner.properties
#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here
#----- Default SonarQube server
#sonar.host.url=http://localhost:9000
sonar.host.url=http://123.249.27.118:9000
#----- Default source code encoding
#sonar.sourceEncoding=UTF-8
sonar.sourceEncoding=UTF-8
執(zhí)行命令檢測代碼(如果設置了令牌需要指定才能成功 -Dsonar.login=toekn 值)
# 去到項目目錄下
[root@flexusx-251ftarget]# cd /jenkins/data/workspace/test01/target
# 在主機進行指定 sonar-scanner 運行
[root@flexusx-251ftarget]# /jenkins/data/sonar-scanner/sonar-scanner-4.6.2.2472-linux/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=test01 -Dsonar.projectKey=java -Dsonar.java.binaries=target/
INFO:Scanner configuration file: /jenkins/data/sonar-scanner/sonar-scanner-4.6.2.2472-linux/conf/sonar-scanner.properties
INFO:Project root configuration file: NONE
INFO:SonarScanner 4.6.2.2472
....................................
INFO:ANALYSIS SUCCESSFUL, you can browse http://123.249.27.118:9000/dashboard?id=java
INFO:Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO:More about the report processing at http://123.249.27.118:9000/api/ce/task?id=AZHAblB5Qhli4mfRayPT
INFO:Analysis total time: 2.408 s
INFO:------------------------------------------------------------------------
INFO:EXECUTION SUCCESS
INFO:------------------------------------------------------------------------
INFO:Total time: 14.564s
INFO:Final Memory: 7M/30M
INFO:------------------------------------------------------------------------
查看 SonarQube 界面檢測結果
Jenkins 配置 Sonar Qube
開啟 Sonar Qube 權限驗證
獲取 Sonar Qube 的令牌(填寫一個名稱,生成 token)
5544214f876d9ef6737c0f2a731991d877adf380
配置 Jenkins 的 Sonar Qube 信息
配置 Sonar-scanner
將 Sonar-scaner 添加到 Jenkins 數(shù)據(jù)卷中并配置全局配置
配置任務的 Sonar-scanner
sonar.projectname=${JOB_NAME}
sonar.projectKey=${JOB_NAME}
sonar.source=./
sonar.java.binaries=target
構建任務
構建成功
體驗和感受
在追求高效開發(fā)與快速迭代的軟件開發(fā)領域,代碼質量是確保軟件穩(wěn)定性和可靠性的基石。華為云 Flexus X 實例,以其卓越的性能和穩(wěn)定的云環(huán)境,為企業(yè)用戶提供了強大的基礎設施支持。結合 Jenkins 持續(xù)集成/持續(xù)部署(CI/CD)工具與 SonarQube 代碼質量管理平臺,F(xiàn)lexusx 更是為企業(yè)開啟了自動化代碼質量監(jiān)控的新篇章。
Jenkins 與 SonarQube 的集成部署,實現(xiàn)了代碼提交后的自動構建、測試以及質量分析。每當有新的代碼提交,Jenkins 便會觸發(fā)構建流程,并將構建結果傳遞給 SonarQube 進行深度代碼質量檢查。SonarQube 能夠識別潛在的代碼缺陷、漏洞以及不規(guī)范的編碼實踐,并提供詳細的報告和改進建議。
值此 828 華為云企業(yè)上云節(jié)之際,可以體驗 Flexusx 服務器上 Jenkins 與 SonarQube 的集成部署方案。這一方案將顯著提升您的軟件開發(fā)效率與代碼質量,幫助您構建更加健壯、可靠的應用程序。讓 Flexusx 成為您軟件質量提升的加速器,Jenkins 與 SonarQube 則為您的代碼質量保駕護航。
選擇華為云 Flexus X 實例,攜手 Jenkins 與 SonarQube,共同開啟自動化代碼質量監(jiān)控的新時代。點擊下方鏈接,在 828 上云節(jié)的特惠期間,讓我們攜手并進,共創(chuàng)軟件開發(fā)的輝煌未來!
產(chǎn)品鏈接:華為云Flexus云服務器X實例直播建站服務器-華為云
審核編輯 黃宇
-
華為云
+關注
關注
3文章
2605瀏覽量
17475 -
jenkins
+關注
關注
0文章
31瀏覽量
5156
發(fā)布評論請先 登錄
相關推薦
評論