前言
強(qiáng)化代碼質(zhì)量,加速軟件交付!Jenkins 攜手 SonarQube,與華為云 Flexus X 云服務(wù)器強(qiáng)強(qiáng)聯(lián)合,打造自動化代碼質(zhì)量監(jiān)控新生態(tài)。Flexus X 以其靈活的算力配置、卓越的性能表現(xiàn),為 Jenkins 與 SonarQube 的集成部署提供強(qiáng)大支撐。在 Flexus X 的助力下,自動化代碼掃描與質(zhì)量問題即時反饋成為可能,顯著提升團(tuán)隊開發(fā)效率與軟件質(zhì)量。立即體驗華為云 828 企業(yè)上云節(jié)優(yōu)惠,讓 Jenkins 與 SonarQube 的集成部署更加順暢,共同守護(hù)您的代碼質(zhì)量,加速軟件交付周期!
SonarQube 介紹
SonarQube 是一款用于代碼質(zhì)量管理的開源工具,它采用 B/S 架構(gòu),主要用于管理源代碼的質(zhì)量。 通過 SonarQube 我們可以檢測出項目中重復(fù)代碼, 潛在 bug, 代碼規(guī)范,安全性漏洞等問題, 并通過 SonarQube web UI 展示出來。
SonarQube 環(huán)境搭建
需要了解:
采用 docker 方式進(jìn)行部署 SonarQube 代碼質(zhì)量管理的開源工具
詳細(xì)購買配置實例可參考文章:快速部署華為云FlexusX實例,開啟您的云端之旅
部署 docker 服務(wù)請參考文章:華為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#映射端口到宿主機(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
啟動容器
[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)險,并點擊安裝
安裝成功后,會查看到重啟按鈕,點擊即可
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 目錄進(jìn)行安裝,因為我們將主機(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í)行命令檢測代碼(如果設(shè)置了令牌需要指定才能成功 -Dsonar.login=toekn 值)
# 去到項目目錄下
[root@flexusx-251ftarget]# cd /jenkins/data/workspace/test01/target
# 在主機(jī)進(jìn)行指定 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 界面檢測結(jié)果
Jenkins 配置 Sonar Qube
開啟 Sonar Qube 權(quán)限驗證
獲取 Sonar Qube 的令牌(填寫一個名稱,生成 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)建成功
體驗和感受
在追求高效開發(fā)與快速迭代的軟件開發(fā)領(lǐng)域,代碼質(zhì)量是確保軟件穩(wěn)定性和可靠性的基石。華為云 Flexus X 實例,以其卓越的性能和穩(wěn)定的云環(huán)境,為企業(yè)用戶提供了強(qiáng)大的基礎(chǔ)設(shè)施支持。結(jié)合 Jenkins 持續(xù)集成/持續(xù)部署(CI/CD)工具與 SonarQube 代碼質(zhì)量管理平臺,F(xiàn)lexusx 更是為企業(yè)開啟了自動化代碼質(zhì)量監(jiān)控的新篇章。
Jenkins 與 SonarQube 的集成部署,實現(xiàn)了代碼提交后的自動構(gòu)建、測試以及質(zhì)量分析。每當(dāng)有新的代碼提交,Jenkins 便會觸發(fā)構(gòu)建流程,并將構(gòu)建結(jié)果傳遞給 SonarQube 進(jìn)行深度代碼質(zhì)量檢查。SonarQube 能夠識別潛在的代碼缺陷、漏洞以及不規(guī)范的編碼實踐,并提供詳細(xì)的報告和改進(jìn)建議。
值此 828 華為云企業(yè)上云節(jié)之際,可以體驗 Flexusx 服務(wù)器上 Jenkins 與 SonarQube 的集成部署方案。這一方案將顯著提升您的軟件開發(fā)效率與代碼質(zhì)量,幫助您構(gòu)建更加健壯、可靠的應(yīng)用程序。讓 Flexusx 成為您軟件質(zhì)量提升的加速器,Jenkins 與 SonarQube 則為您的代碼質(zhì)量保駕護(hù)航。
選擇華為云 Flexus X 實例,攜手 Jenkins 與 SonarQube,共同開啟自動化代碼質(zhì)量監(jiān)控的新時代。點擊下方鏈接,在 828 上云節(jié)的特惠期間,讓我們攜手并進(jìn),共創(chuàng)軟件開發(fā)的輝煌未來!
產(chǎn)品鏈接:華為云Flexus云服務(wù)器X實例直播建站服務(wù)器-華為云
審核編輯 黃宇
-
華為云
+關(guān)注
關(guān)注
3文章
2696瀏覽量
17595 -
jenkins
+關(guān)注
關(guān)注
0文章
31瀏覽量
5177
發(fā)布評論請先 登錄
相關(guān)推薦
如何在持續(xù)集成開發(fā)流程中使用Jenkins和Docker?
在Jenkins管理的持續(xù)集成境引入Docker來優(yōu)化資源配置
![在<b class='flag-5'>Jenkins</b>管理的持續(xù)<b class='flag-5'>集成</b>境引入Docker來優(yōu)化資源配置](https://file.elecfans.com/web2/M00/49/DD/pYYBAGKhvGyAN8taAAAwgIPTYqg675.png)
jenkins有什么用_jenkins如何自動部署
![<b class='flag-5'>jenkins</b>有什么用_<b class='flag-5'>jenkins</b>如何<b class='flag-5'>自動</b><b class='flag-5'>部署</b>](https://file1.elecfans.com//web2/M00/A7/19/wKgZomUMQl-AKo7MAAAdQXmDnBc562.png)
jenkins持續(xù)集成原理
Jenkins詳細(xì)安裝與構(gòu)建部署使用教程
![<b class='flag-5'>Jenkins</b>詳細(xì)安裝與構(gòu)建<b class='flag-5'>部署</b>使用教程](https://file.elecfans.com/web1/M00/45/D5/pIYBAFp5RKSACc6JAAGU6Ss3CFU835.png)
Jenkins+Docker一鍵自動化部署SpringBoot項目
Jenkins+Docker實現(xiàn)一鍵自動化部署項目!
Jenkins+Docker一鍵自動化部署SpringBoot應(yīng)用最精簡流程
![<b class='flag-5'>Jenkins</b>+Docker一鍵<b class='flag-5'>自動化</b><b class='flag-5'>部署</b>SpringBoot應(yīng)用最精簡流程](https://file1.elecfans.com/web2/M00/AC/B3/wKgaomVIo8WASUd0AAAXZrmT-0o083.png)
基于Jenkins+GitLab+Maven實現(xiàn)代碼自動打包編譯發(fā)布
![基于<b class='flag-5'>Jenkins</b>+GitLab+Maven實現(xiàn)<b class='flag-5'>代碼</b><b class='flag-5'>自動</b>打包編譯發(fā)布](https://file1.elecfans.com/web2/M00/B1/2A/wKgZomVav1-APdgyAAAW-DRh5IQ877.png)
使用Jenkins和單個模板部署多個Kubernetes組件
![使用<b class='flag-5'>Jenkins</b>和單個模板<b class='flag-5'>部署</b>多個Kubernetes組件](https://file1.elecfans.com/web2/M00/BB/14/wKgaomWThfqAVgvDAAAG_lmP9yY754.jpg)
Flexus X 實例 Docker+Jenkins+gitee 實現(xiàn) CICD 自動化部署 - 解放你的雙手~
![Flexus X 實例 Docker+<b class='flag-5'>Jenkins</b>+gitee 實現(xiàn) CICD <b class='flag-5'>自動化</b><b class='flag-5'>部署</b> - 解放你的雙手~](https://file1.elecfans.com/web3/M00/03/F4/wKgZO2dtLVmAbhWoAAAeyH5wNJ4192.png)
云服務(wù)器Flexus X實例,Docker集成搭建Jenkins CI/CD平臺
![云服務(wù)器Flexus X實例,Docker<b class='flag-5'>集成</b>搭建<b class='flag-5'>Jenkins</b> CI/CD平臺](https://file1.elecfans.com//web3/M00/04/27/wKgZPGdv2BuAbU5XAAHzPWpIORI19.webp)
基于 Docker 與 Jenkins 實現(xiàn)自動化部署
![基于 Docker 與 <b class='flag-5'>Jenkins</b> 實現(xiàn)<b class='flag-5'>自動化</b><b class='flag-5'>部署</b>](https://file1.elecfans.com//web3/M00/05/21/wKgZPGd88vSARHEhAAEA43MSbXE167.png)
評論