前言
强化代码质量,加速软件交付!Jenkins 携手 SonarQube,与华为云 Flexus X 云服务器强强联合,打造自动化代码质量监控新生态。Flexus X 以其灵活的算力配置、卓越的性能表现,为 Jenkins 与 SonarQube 的集成部署提供强大支撑。在 Flexus X 的助力下,自动化代码扫描与质量问题即时反馈成为可能,显著提升团队开发效率与软件质量。立即体验华为云 828 企业上云节优惠,让 Jenkins 与 SonarQube 的集成部署更加顺畅,共同守护您的代码质量,加速软件交付周期!
SonarQube 介绍
SonarQube 是一款用于代码质量管理的开源工具,它采用 B/S 架构,主要用于管理源代码的质量。 通过 SonarQube 我们可以检测出项目中重复代码, 潜在 bug, 代码规范,安全性漏洞等问题, 并通过 SonarQube web UI 展示出来。
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
访问地址:http://主机 ip:9000
登录用户名和密码均为 admin
登录成功进行密码修改
进入 Sonar Qube首页
安装中文插件
我同意风险,并点击安装
安装成功后,会查看到重启按钮,点击即可
Jenkins 集成 Sonar Qube
Jenkins 继承 Sonar Qube 实现代码扫描需要先下载整合插件
Jenkins 安装插件
下载 Sonar Qube 插件
安装成功
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 界面检测结果
Jenkins 配置 Sonar Qube
开启 Sonar Qube 权限验证
获取 Sonar Qube 的令牌(填写一个名称,生成 token)
5544214f876d9ef6737c0f2a731991d877adf380
配置 Jenkins 的 Sonar Qube 信息
配置 Sonar-scanner
将 Sonar-scaner 添加到 Jenkins 数据卷中并配置全局配置
配置任务的 Sonar-scanner
sonar.projectname=${JOB_NAME}
sonar.projectKey=${JOB_NAME}
sonar.source=./
sonar.java.binaries=target
构建任务
构建成功
体验和感受
在追求高效开发与快速迭代的软件开发领域,代码质量是确保软件稳定性和可靠性的基石。华为云 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实例直播建站服务器-华为云
审核编辑 黄宇
-
华为云
+关注
关注
3文章
2605浏览量
17475 -
jenkins
+关注
关注
0文章
31浏览量
5156
发布评论请先 登录
相关推荐
评论