0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Jenkins 與 SonarQube 集成部署,自動化代碼質量監(jiān)控

jf_21561199 ? 來源:jf_21561199 ? 作者:jf_21561199 ? 2025-01-07 17:24 ? 次閱讀

前言

強化代碼質量,加速軟件交付!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 的集成部署更加順暢,共同守護您的代碼質量,加速軟件交付周期!

wKgZPGd88t6AK9YwAAEA4xEY1H4138.png

SonarQube 介紹

SonarQube 是一款用于代碼質量管理的開源工具,它采用 B/S 架構,主要用于管理源代碼的質量。 通過 SonarQube 我們可以檢測出項目中重復代碼, 潛在 bug, 代碼規(guī)范,安全性漏洞等問題, 并通過 SonarQube web UI 展示出來。

wKgZO2d88t-ANwcQAABO6yBwzU0894.png

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

wKgZPGd88t-ARN6dAAEnNUr1Zr8951.png

訪問地址:http://主機 ip:9000

wKgZPGd88t-AWXj-AABHsF3zP2Q004.png

登錄用戶名和密碼均為 admin

wKgZO2d88uCAGi1NAAAYkz5mAfU047.png

登錄成功進行密碼修改

wKgZPGd88uCAPYaeAABMhNSMd-I411.png

進入 Sonar Qube首頁

wKgZO2d88uCAUSKcAADCl87zr1U163.png

安裝中文插件

我同意風險,并點擊安裝

wKgZPGd88uCANbBWAAF7D_FlnNQ406.png

安裝成功后,會查看到重啟按鈕,點擊即可

wKgZO2d88uGAIv5pAAFT-ECAuJs630.png

Jenkins 集成 Sonar Qube

Jenkins 繼承 Sonar Qube 實現(xiàn)代碼掃描需要先下載整合插件

Jenkins 安裝插件

下載 Sonar Qube 插件

wKgZPGd88uGAZmU8AAFRr6mkt44606.png

wKgZO2d88uGAXHhjAADRcLMdebI163.png

安裝成功

wKgZPGd88uGAWXlVAACbNjGVpLY746.png

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 界面檢測結果

wKgZO2d88uKAdaH2AAC_ds7SAU8122.png

Jenkins 配置 Sonar Qube

開啟 Sonar Qube 權限驗證

wKgZPGd88uKAIzfqAAEv4o99uTA725.png

獲取 Sonar Qube 的令牌(填寫一個名稱,生成 token)

5544214f876d9ef6737c0f2a731991d877adf380

wKgZO2d88uKADmsVAADZstK8Y4Y173.png

配置 Jenkins 的 Sonar Qube 信息

wKgZPGd88uOANcbkAAFa26BobWA285.png

wKgZO2d88uOAUULwAACMiTM_1xk066.png

wKgZPGd88uOAPRdSAACO9gRQHa0444.png

wKgZO2d88uOARZsFAACi8OTe8Ug674.png

配置 Sonar-scanner

將 Sonar-scaner 添加到 Jenkins 數(shù)據(jù)卷中并配置全局配置

wKgZO2d88uSAVTCuAAFAEA-CfWs018.png

wKgZPGd88uSAfJmAAACPM5rPvHw113.png

配置任務的 Sonar-scanner

sonar.projectname=${JOB_NAME}

sonar.projectKey=${JOB_NAME}

sonar.source=./

sonar.java.binaries=target

wKgZO2d88uWAe7TIAADck1rRy2A981.png

構建任務

wKgZPGd88uWAVPV-AADoyirKp3w378.png

構建成功

wKgZO2d88uWALKD1AAGHWWNl1f8186.png

wKgZPGd88uWAHyE9AADw3p08DfE310.png

體驗和感受

在追求高效開發(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實例直播建站服務器-華為云

wKgZO2d88uaAO8BbAAMdMY7jqCs587.png

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 華為云
    +關注

    關注

    3

    文章

    2605

    瀏覽量

    17475
  • jenkins
    +關注

    關注

    0

    文章

    31

    瀏覽量

    5156
收藏 人收藏

    評論

    相關推薦

    如何在持續(xù)集成開發(fā)流程中使用Jenkins和Docker?

    Jenkins自動化我們開發(fā)的測試流程。 在您開始之前,我們假設您對Arm上的嵌入式軟件開發(fā)有基本的了解。Docker、Jenkins和Arm Fast模型將在指南中進行解釋。 對Python的高級
    發(fā)表于 08-02 10:50

    Jenkins管理的持續(xù)集成境引入Docker來優(yōu)化資源配置

    Jenkins是被廣泛應用的持續(xù)集成、自動化測試、持續(xù)部署的框架,甚至有些項目組順便將其用來做流程管理的工具。根據(jù)任務的多寡,Jenkins
    發(fā)表于 09-26 11:42 ?0次下載
    在<b class='flag-5'>Jenkins</b>管理的持續(xù)<b class='flag-5'>集成</b>境引入Docker來優(yōu)化資源配置

    jenkins有什么用_jenkins如何自動部署

    Jenkins是一個開源的、提供友好操作界面的持續(xù)集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持續(xù)、自動的構建/測試軟件項目、監(jiān)控外部任務的運行(這個比較抽象
    發(fā)表于 12-20 19:06 ?3.7w次閱讀
    <b class='flag-5'>jenkins</b>有什么用_<b class='flag-5'>jenkins</b>如何<b class='flag-5'>自動</b><b class='flag-5'>部署</b>

    jenkins自動化部署

    本文詳細介紹Jenkins的簡單使用—jenkins自動化部署。
    的頭像 發(fā)表于 02-06 11:27 ?4700次閱讀
    <b class='flag-5'>jenkins</b><b class='flag-5'>自動化</b><b class='flag-5'>部署</b>

    jenkins持續(xù)集成原理

    本文詳細介紹了jenkins持續(xù)集成原理。持續(xù)集成就是為解決程序代碼提交質量低,提交內容導致原有系統(tǒng)的bug,按時或按需
    的頭像 發(fā)表于 02-06 11:43 ?4102次閱讀

    Jenkins詳細安裝與構建部署使用教程

    本文詳細介紹了Jenkins安裝與構建部署使用教程。Jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續(xù)集成變成可能。Je
    發(fā)表于 02-06 13:47 ?1769次閱讀
    <b class='flag-5'>Jenkins</b>詳細安裝與構建<b class='flag-5'>部署</b>使用教程

    Jenkins+Docker一鍵自動化部署SpringBoot最簡流程

    簡述實現(xiàn)步驟:在docker安裝jenkins,配置jenkins基本信息,利用Dockerfile和shell腳本實現(xiàn)項目自動拉取打包并運行。
    的頭像 發(fā)表于 11-23 10:16 ?1395次閱讀

    Jenkins+Docker一鍵自動化部署SpringBoot項目

    本文章實現(xiàn)最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。
    的頭像 發(fā)表于 12-14 10:04 ?928次閱讀

    Jenkins+Docker實現(xiàn)一鍵自動化部署項目!

    本文章實現(xiàn)最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。
    的頭像 發(fā)表于 01-06 15:36 ?1274次閱讀

    Jenkins+Docker一鍵自動化部署SpringBoot應用最精簡流程

    簡述實現(xiàn)步驟:在docker安裝jenkins,配置jenkins基本信息,利用Dockerfile和shell腳本實現(xiàn)項目自動拉取打包并運行。
    的頭像 發(fā)表于 11-06 16:27 ?2340次閱讀
    <b class='flag-5'>Jenkins</b>+Docker一鍵<b class='flag-5'>自動化</b><b class='flag-5'>部署</b>SpringBoot應用最精簡流程

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

    Jenkins是一個獨立開源的持續(xù)集成和持續(xù)交付工具,用于自動化構建、測試和部署軟件項目。
    的頭像 發(fā)表于 11-20 09:57 ?5012次閱讀
    基于<b class='flag-5'>Jenkins</b>+GitLab+Maven實現(xiàn)<b class='flag-5'>代碼</b><b class='flag-5'>自動</b>打包編譯發(fā)布

    使用Jenkins和單個模板部署多個Kubernetes組件

    在持續(xù)集成部署中,我們通常需要部署多個實例或組件到Kubernetes集群中。通過Jenkins的管道腳本,我們可以自動化這個過程。在本文
    的頭像 發(fā)表于 01-02 11:40 ?802次閱讀
    使用<b class='flag-5'>Jenkins</b>和單個模板<b class='flag-5'>部署</b>多個Kubernetes組件

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

    前言 828 B2B 企業(yè)節(jié)特惠來襲,F(xiàn)lexus X 實例引領自動化部署新紀元!Docker 攜手 Jenkins 與 Gitee,共創(chuàng) CICD 無限可能!在快速迭代的數(shù)字時代,我們自豪地推出
    的頭像 發(fā)表于 12-26 18:19 ?183次閱讀
    Flexus X 實例 Docker+<b class='flag-5'>Jenkins</b>+gitee 實現(xiàn) CICD <b class='flag-5'>自動化</b><b class='flag-5'>部署</b> - 解放你的雙手~

    云服務器Flexus X實例,Docker集成搭建Jenkins CI/CD平臺

    Jenkins 是一個開源的自動化服務器,用于持續(xù)集成(CI)和持續(xù)交付(CD)軟件項目。它允許開發(fā)人員在軟件開發(fā)過程中自動化各種任務,如構建、測試和
    的頭像 發(fā)表于 12-29 15:43 ?127次閱讀
    云服務器Flexus X實例,Docker<b class='flag-5'>集成</b>搭建<b class='flag-5'>Jenkins</b> CI/CD平臺

    基于 Docker 與 Jenkins 實現(xiàn)自動化部署

    前言 重塑自動化部署新高度,Docker 攜手 Jenkins,在華為云 Flexus X 云服務器的加持下,引領持續(xù)集成部署的新紀元。F
    的頭像 發(fā)表于 01-07 17:25 ?128次閱讀
    基于 Docker 與 <b class='flag-5'>Jenkins</b> 實現(xiàn)<b class='flag-5'>自動化</b><b class='flag-5'>部署</b>