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

电子说

1.3w人已加入

描述

前言

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

jenkins

SonarQube 介绍

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

jenkins

Sonar Qube 环境搭建

需要了解:

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

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

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

Sonar Qube 的安装

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

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

拉取镜像

[root@flexusx-251f ~]# docker pull postgres

[root@flexusx-251f ~]# docker pull sonarqube: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-251f sonarqube]# vim /etc/sysctl.conf

# 在最后添加一行 vm.max_map_count

[root@flexusx-251f sonarqube]# cat  /etc/sysctl.conf

...

vm.max_map_count=262144

# 刷新

[root@flexusx-251f sonarqube]# 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-251f sonarqube]# docker-compose up -d

WARN[0000] /sonarqube/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion

[+] Running 3/3

 ✔ Network sonarqube_sonarnet  Created                                            0.0s

 ✔ Container postgres_db       Started                                            0.2s

 ✔ Container sonarqube         Started                                            0.3s

[root@flexusx-251f sonarqube]# docker-compose ls

NAME                STATUS              CONFIG FILES

sonarqube           running(2)          /sonarqube/docker-compose.yaml

### 访问 Sonar Qube 首页

放行安全组 9000,5432

jenkins

访问地址:http://主机 ip:9000

jenkins

登录用户名和密码均为 admin

jenkins

登录成功进行密码修改

jenkins

进入 Sonar Qube 首页

jenkins

安装中文插件

我同意风险,并点击安装

jenkins

安装成功后,会查看到重启按钮,点击即可

jenkins

Jenkins 集成 Sonar Qube

Jenkins 继承 Sonar Qube 实现代码扫描需要先下载整合插件

Jenkins 安装插件

下载 Sonar Qube 插件

jenkins

jenkins

安装成功

jenkins

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-251f sonar-scanner]# ls

sonar-scanner-cli-4.6.2.2472-linux.zip

解压软件包

[root@flexusx-251f sonar-scanner]# unzip sonar-scanner-cli-4.6.2.2472-linux.zip

配置 sonarQube 服务端地址,修改 conf 下的 sonar-scanner.properties

[root@flexusx-251f sonar-scanner]# ls

sonar-scanner-4.6.2.2472-linux  sonar-scanner-cli-4.6.2.2472-linux.zip

[root@flexusx-251f sonar-scanner]# cd sonar-scanner-4.6.2.2472-linux/

[root@flexusx-251f sonar-scanner-4.6.2.2472-linux]# ls

bin  conf  jre  lib

[root@flexusx-251f sonar-scanner-4.6.2.2472-linux]# cd conf/

[root@flexusx-251f conf]# ls

sonar-scanner.properties

[root@flexusx-251f conf]# vim sonar-scanner.properties

[root@flexusx-251f conf]# 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-251f target]# cd /jenkins/data/workspace/test01/target

# 在主机进行指定 sonar-scanner 运行

[root@flexusx-251f target]# /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

Jenkins 配置 Sonar Qube

开启 Sonar Qube 权限验证

jenkins

获取 Sonar Qube 的令牌(填写一个名称,生成 token)

5544214f876d9ef6737c0f2a731991d877adf380

jenkins

配置 Jenkins 的 Sonar Qube 信息

jenkins

jenkins

jenkins

jenkins

配置 Sonar-scanner

将 Sonar-scaner 添加到 Jenkins 数据卷中并配置全局配置

jenkins

jenkins

配置任务的 Sonar-scanner

sonar.projectname=${JOB_NAME}

sonar.projectKey=${JOB_NAME}

sonar.source=./

sonar.java.binaries=target

jenkins

构建任务

jenkins

构建成功

jenkins

jenkins

体验和感受

在追求高效开发与快速迭代的软件开发领域,代码质量是确保软件稳定性和可靠性的基石。华为云 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实例直播建站服务器-华为云
 

jenkins

审核编辑 黄宇
 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分