0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Jenkins 与 SonarQube 集成部署,自动化代码质量监控

jf_21561199 来源:jf_21561199 作者:jf_21561199 2025-01-07 17:24 次阅读

前言

强化代码质量,加速软件交付!Jenkins 携手 SonarQube,与华为云 Flexus X 云服务器强强联合,打造自动化代码质量监控新生态。Flexus X 以其灵活的算力配置、卓越的性能表现,为 Jenkins 与 SonarQube 的集成部署提供强大支撑。在 Flexus X 的助力下,自动化代码扫描与质量问题即时反馈成为可能,显著提升团队开发效率与软件质量。立即体验华为云 828 企业上云节优惠,让 Jenkins 与 SonarQube 的集成部署更加顺畅,共同守护您的代码质量,加速软件交付周期!

wKgZPGd88t6AK9YwAAEA4xEY1H4138.png

SonarQube 介绍

SonarQube 是一款用于代码质量管理的开源工具,它采用 B/S 架构,主要用于管理源代码的质量。 通过 SonarQube 我们可以检测出项目中重复代码, 潜在 bug, 代码规范,安全性漏洞等问题, 并通过 SonarQube web UI 展示出来。

wKgZO2d88t-ANwcQAABO6yBwzU0894.png

SonarQube 环境搭建

需要了解:

采用 docker 方式进行部署 SonarQube 代码质量管理的开源工具

详细购买配置实例可参考文章:快速部署华为云FlexusX实例,开启您的云端之旅

部署 docker 服务请参考文章:华为FlexusX与Docker+Nginx的高效整合之路

SonarQube 的安装

SonarQube 在 7.9 版本中已经放弃了对 MySQL 的支持,并且建议在商业环境中采用 PostgreSQL,那么安装 SonarQube 时需要依赖 PostgreSQL。

并且这里会安装 SonarQube 的长期支持版本8.9

拉取镜像

[root@flexusx-251f~]#dockerpullpostgres

[root@flexusx-251f~]#dockerpullsonarqube:8.9.3-community

#创建目录

[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#映射端口到宿主机,以从外部访问数据库

networks:

-sonarnet#连接到 sonarnet 网络

environment:

POSTGRES_USER:sonar#创建数据库

POSTGRES_PASSWORD:sonar#数据库密码

sonarqube:

image:sonarqube:8.9.3-community#指定镜像

container_name:sonarqube#指定容器名称

depends_on:

-db#指定服务

ports:

-"9000:9000"#映射端口到宿主机,以便可以从外部访问 SonarQube。

networks:

-sonarnet#连接到 sonarnet 网络

environment:

SONAR_JDBC_URL:jdbc:postgresql://db:5432/sonar

SONAR_JDBC_USERNAME:sonar

SONAR_JDBC_PASSWORD:sonar

networks:

sonarnet:

driver:bridge#创建桥接网络

配置 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 实现代码扫描需要先下载整合插件

Jenkins 安装插件

下载 Sonar Qube 插件

wKgZPGd88uGAZmU8AAFRr6mkt44606.png

wKgZO2d88uGAXHhjAADRcLMdebI163.png

安装成功

wKgZPGd88uGAWXlVAACbNjGVpLY746.png

Sonar-scanner 实现代码检测****

下载 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

执行命令检测代码(如果设置了令牌需要指定才能成功 -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 数据卷中并配置全局配置

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

体验和感受

在追求高效开发与快速迭代的软件开发领域,代码质量是确保软件稳定性和可靠性的基石。华为云 Flexus X 实例,以其卓越的性能和稳定的云环境,为企业用户提供了强大的基础设施支持。结合 Jenkins 持续集成/持续部署(CI/CD)工具与 SonarQube 代码质量管理平台,Flexusx 更是为企业开启了自动化代码质量监控的新篇章。

Jenkins 与 SonarQube 的集成部署,实现了代码提交后的自动构建、测试以及质量分析。每当有新的代码提交,Jenkins 便会触发构建流程,并将构建结果传递给 SonarQube 进行深度代码质量检查。SonarQube 能够识别潜在的代码缺陷、漏洞以及不规范的编码实践,并提供详细的报告和改进建议。

值此 828 华为云企业上云节之际,可以体验 Flexusx 服务器上 Jenkins 与 SonarQube 的集成部署方案。这一方案将显著提升您的软件开发效率与代码质量,帮助您构建更加健壮、可靠的应用程序。让 Flexusx 成为您软件质量提升的加速器,Jenkins 与 SonarQube 则为您的代码质量保驾护航。

选择华为云 Flexus X 实例,携手 Jenkins 与 SonarQube,共同开启自动化代码质量监控的新时代。点击下方链接,在 828 上云节的特惠期间,让我们携手并进,共创软件开发的辉煌未来!

产品链接华为云Flexus云服务器X实例直播建站服务器-华为云

wKgZO2d88uaAO8BbAAMdMY7jqCs587.png

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 华为云
    +关注

    关注

    3

    文章

    2605

    浏览量

    17475
  • jenkins
    +关注

    关注

    0

    文章

    31

    浏览量

    5156
收藏 人收藏

    评论

    相关推荐

    如何在持续集成开发流程中使用Jenkins和Docker?

    Jenkins自动化我们开发的测试流程。 在您开始之前,我们假设您对Arm上的嵌入式软件开发有基本的了解。Docker、Jenkins和Arm Fast模型将在指南中进行解释。 对Python的高级
    发表于 08-02 10:50

    Jenkins管理的持续集成境引入Docker来优化资源配置

    Jenkins是被广泛应用的持续集成自动化测试、持续部署的框架,甚至有些项目组顺便将其用来做流程管理的工具。根据任务的多寡,Jenkins
    发表于 09-26 11:42 0次下载
    在<b class='flag-5'>Jenkins</b>管理的持续<b class='flag-5'>集成</b>境引入Docker来优化资源配置

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

    Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象
    发表于 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自动化部署
    的头像 发表于 02-06 11:27 4700次阅读
    <b class='flag-5'>jenkins</b><b class='flag-5'>自动化</b><b class='flag-5'>部署</b>

    jenkins持续集成原理

    本文详细介绍了jenkins持续集成原理。持续集成就是为解决程序代码提交质量低,提交内容导致原有系统的bug,按时或按需
    的头像 发表于 02-06 11:43 4102次阅读

    Jenkins详细安装与构建部署使用教程

    本文详细介绍了Jenkins安装与构建部署使用教程。Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Je
    发表于 02-06 13:47 1769次阅读
    <b class='flag-5'>Jenkins</b>详细安装与构建<b class='flag-5'>部署</b>使用教程

    Jenkins+Docker一键自动化部署SpringBoot最简流程

    简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。
    的头像 发表于 11-23 10:16 1395次阅读

    Jenkins+Docker一键自动化部署SpringBoot项目

    本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。
    的头像 发表于 12-14 10:04 928次阅读

    Jenkins+Docker实现一键自动化部署项目!

    本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。
    的头像 发表于 01-06 15:36 1274次阅读

    Jenkins+Docker一键自动化部署SpringBoot应用最精简流程

    简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。
    的头像 发表于 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实现代码自动打包编译发布

    Jenkins是一个独立开源的持续集成和持续交付工具,用于自动化构建、测试和部署软件项目。
    的头像 发表于 11-20 09:57 5012次阅读
    基于<b class='flag-5'>Jenkins</b>+GitLab+Maven实现<b class='flag-5'>代码</b><b class='flag-5'>自动</b>打包编译发布

    使用Jenkins和单个模板部署多个Kubernetes组件

    在持续集成部署中,我们通常需要部署多个实例或组件到Kubernetes集群中。通过Jenkins的管道脚本,我们可以自动化这个过程。在本文
    的头像 发表于 01-02 11:40 802次阅读
    使用<b class='flag-5'>Jenkins</b>和单个模板<b class='flag-5'>部署</b>多个Kubernetes组件

    Flexus X 实例 Docker+Jenkins+gitee 实现 CICD 自动化部署 - 解放你的双手~

    前言 828 B2B 企业节特惠来袭,Flexus X 实例引领自动化部署新纪元!Docker 携手 Jenkins 与 Gitee,共创 CICD 无限可能!在快速迭代的数字时代,我们自豪地推出
    的头像 发表于 12-26 18:19 183次阅读
    Flexus X 实例 Docker+<b class='flag-5'>Jenkins</b>+gitee 实现 CICD <b class='flag-5'>自动化</b><b class='flag-5'>部署</b> - 解放你的双手~

    云服务器Flexus X实例,Docker集成搭建Jenkins CI/CD平台

    Jenkins 是一个开源的自动化服务器,用于持续集成(CI)和持续交付(CD)软件项目。它允许开发人员在软件开发过程中自动化各种任务,如构建、测试和
    的头像 发表于 12-29 15:43 126次阅读
    云服务器Flexus X实例,Docker<b class='flag-5'>集成</b>搭建<b class='flag-5'>Jenkins</b> CI/CD平台

    基于 Docker 与 Jenkins 实现自动化部署

    前言 重塑自动化部署新高度,Docker 携手 Jenkins,在华为云 Flexus X 云服务器的加持下,引领持续集成部署的新纪元。F
    的头像 发表于 01-07 17:25 123次阅读
    基于 Docker 与 <b class='flag-5'>Jenkins</b> 实现<b class='flag-5'>自动化</b><b class='flag-5'>部署</b>