前言
強(qiáng)化代碼質(zhì)量,加速軟件交付!Jenkins 攜手 SonarQube,與華為云 Flexus X 云服務(wù)器強(qiáng)強(qiáng)聯(lián)合,打造自動(dòng)化代碼質(zhì)量監(jiān)控新生態(tài)。Flexus X 以其靈活的算力配置、卓越的性能表現(xiàn),為 Jenkins 與 SonarQube 的集成部署提供強(qiáng)大支撐。在 Flexus X 的助力下,自動(dòng)化代碼掃描與質(zhì)量問題即時(shí)反饋成為可能,顯著提升團(tuán)隊(duì)開發(fā)效率與軟件質(zhì)量。立即體驗(yàn)華為云 828 企業(yè)上云節(jié)優(yōu)惠,讓 Jenkins 與 SonarQube 的集成部署更加順暢,共同守護(hù)您的代碼質(zhì)量,加速軟件交付周期!
SonarQube 介紹
SonarQube 是一款用于代碼質(zhì)量管理的開源工具,它采用 B/S 架構(gòu),主要用于管理源代碼的質(zhì)量。 通過 SonarQube 我們可以檢測(cè)出項(xiàng)目中重復(fù)代碼, 潛在 bug, 代碼規(guī)范,安全性漏洞等問題, 并通過 SonarQube web UI 展示出來。
SonarQube 環(huán)境搭建
需要了解:
采用 docker 方式進(jìn)行部署 SonarQube 代碼質(zhì)量管理的開源工具
詳細(xì)購(gòu)買配置實(shí)例可參考文章:快速部署華為云FlexusX實(shí)例,開啟您的云端之旅
部署 docker 服務(wù)請(qǐng)參考文章:華為FlexusX與Docker+Nginx的高效整合之路
SonarQube 的安裝
SonarQube 在 7.9 版本中已經(jīng)放棄了對(duì) MySQL 的支持,并且建議在商業(yè)環(huán)境中采用 PostgreSQL,那么安裝 SonarQube 時(shí)需要依賴 PostgreSQL。
并且這里會(huì)安裝 SonarQube 的長(zhǎng)期支持版本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#映射端口到宿主機(jī),以從外部訪問數(shù)據(jù)庫
networks:
-sonarnet#連接到 sonarnet 網(wǎng)絡(luò)
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#指定服務(wù)
ports:
-"9000:9000"#映射端口到宿主機(jī),以便可以從外部訪問 SonarQube。
networks:
-sonarnet#連接到 sonarnet 網(wǎng)絡(luò)
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)絡(luò)
配置 sysctl.conf 文件信息。設(shè)置 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
啟動(dòng)容器
[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://主機(jī) ip:9000
登錄用戶名和密碼均為 admin
登錄成功進(jìn)行密碼修改
進(jìn)入 Sonar Qube首頁
安裝中文插件
我同意風(fēng)險(xiǎn),并點(diǎn)擊安裝
安裝成功后,會(huì)查看到重啟按鈕,點(diǎn)擊即可
Jenkins 集成 Sonar Qube
Jenkins 繼承 Sonar Qube 實(shí)現(xiàn)代碼掃描需要先下載整合插件
Jenkins 安裝插件
下載 Sonar Qube 插件
安裝成功
Sonar-scanner 實(shí)現(xiàn)代碼檢測(cè)****
下載 Sonar-scanner:https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/scanners/sonarscanner/
下載 4.6.x 版本即可,要求 Linux 版本
我們直接在/Jenkins/data 目錄進(jìn)行安裝,因?yàn)槲覀儗⒅鳈C(jī)的/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 服務(wù)端地址,修改 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/
[[email protected]]# ls
binconf jre lib
[[email protected]]# 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í)行命令檢測(cè)代碼(如果設(shè)置了令牌需要指定才能成功 -Dsonar.login=toekn 值)
# 去到項(xiàng)目目錄下
[root@flexusx-251ftarget]# cd /jenkins/data/workspace/test01/target
# 在主機(jī)進(jìn)行指定 sonar-scanner 運(yùn)行
[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 界面檢測(cè)結(jié)果
Jenkins 配置 Sonar Qube
開啟 Sonar Qube 權(quán)限驗(yàn)證
獲取 Sonar Qube 的令牌(填寫一個(gè)名稱,生成 token)
5544214f876d9ef6737c0f2a731991d877adf380
配置 Jenkins 的 Sonar Qube 信息
配置 Sonar-scanner
將 Sonar-scaner 添加到 Jenkins 數(shù)據(jù)卷中并配置全局配置
配置任務(wù)的 Sonar-scanner
sonar.projectname=${JOB_NAME}
sonar.projectKey=${JOB_NAME}
sonar.source=./
sonar.java.binaries=target
構(gòu)建任務(wù)
構(gòu)建成功
體驗(yàn)和感受
在追求高效開發(fā)與快速迭代的軟件開發(fā)領(lǐng)域,代碼質(zhì)量是確保軟件穩(wěn)定性和可靠性的基石。華為云 Flexus X 實(shí)例,以其卓越的性能和穩(wěn)定的云環(huán)境,為企業(yè)用戶提供了強(qiáng)大的基礎(chǔ)設(shè)施支持。結(jié)合 Jenkins 持續(xù)集成/持續(xù)部署(CI/CD)工具與 SonarQube 代碼質(zhì)量管理平臺(tái),F(xiàn)lexusx 更是為企業(yè)開啟了自動(dòng)化代碼質(zhì)量監(jiān)控的新篇章。
Jenkins 與 SonarQube 的集成部署,實(shí)現(xiàn)了代碼提交后的自動(dòng)構(gòu)建、測(cè)試以及質(zhì)量分析。每當(dāng)有新的代碼提交,Jenkins 便會(huì)觸發(fā)構(gòu)建流程,并將構(gòu)建結(jié)果傳遞給 SonarQube 進(jìn)行深度代碼質(zhì)量檢查。SonarQube 能夠識(shí)別潛在的代碼缺陷、漏洞以及不規(guī)范的編碼實(shí)踐,并提供詳細(xì)的報(bào)告和改進(jìn)建議。
值此 828 華為云企業(yè)上云節(jié)之際,可以體驗(yàn) Flexusx 服務(wù)器上 Jenkins 與 SonarQube 的集成部署方案。這一方案將顯著提升您的軟件開發(fā)效率與代碼質(zhì)量,幫助您構(gòu)建更加健壯、可靠的應(yīng)用程序。讓 Flexusx 成為您軟件質(zhì)量提升的加速器,Jenkins 與 SonarQube 則為您的代碼質(zhì)量保駕護(hù)航。
選擇華為云 Flexus X 實(shí)例,攜手 Jenkins 與 SonarQube,共同開啟自動(dòng)化代碼質(zhì)量監(jiān)控的新時(shí)代。點(diǎn)擊下方鏈接,在 828 上云節(jié)的特惠期間,讓我們攜手并進(jìn),共創(chuàng)軟件開發(fā)的輝煌未來!
產(chǎn)品鏈接:華為云Flexus云服務(wù)器X實(shí)例直播建站服務(wù)器-華為云
審核編輯 黃宇
-
華為云
+關(guān)注
關(guān)注
3文章
2755瀏覽量
17980 -
jenkins
+關(guān)注
關(guān)注
0文章
31瀏覽量
5261
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何在持續(xù)集成開發(fā)流程中使用Jenkins和Docker?
在Jenkins管理的持續(xù)集成境引入Docker來優(yōu)化資源配置

jenkins有什么用_jenkins如何自動(dòng)部署

jenkins持續(xù)集成原理
Jenkins詳細(xì)安裝與構(gòu)建部署使用教程

Jenkins+Docker一鍵自動(dòng)化部署SpringBoot項(xiàng)目
Jenkins+Docker實(shí)現(xiàn)一鍵自動(dòng)化部署項(xiàng)目!
Jenkins+Docker一鍵自動(dòng)化部署SpringBoot應(yīng)用最精簡(jiǎn)流程

基于Jenkins+GitLab+Maven實(shí)現(xiàn)代碼自動(dòng)打包編譯發(fā)布

使用Jenkins和單個(gè)模板部署多個(gè)Kubernetes組件

Flexus X 實(shí)例 Docker+Jenkins+gitee 實(shí)現(xiàn) CICD 自動(dòng)化部署 - 解放你的雙手~

云服務(wù)器Flexus X實(shí)例,Docker集成搭建Jenkins CI/CD平臺(tái)

基于 Docker 與 Jenkins 實(shí)現(xiàn)自動(dòng)化部署

Jenkins的安裝教程

評(píng)論