写点什么

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

作者:轶天下事
  • 2025-01-06
    海南
  • 本文字数:4237 字

    阅读完需:约 14 分钟

前言

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



SonarQube 介绍

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


Sonar Qube 环境搭建

需要了解:


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



访问地址: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-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 配置 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实例直播建站服务器-华为云



用户头像

轶天下事

关注

还未添加个人签名 2022-07-30 加入

还未添加个人简介

评论

发布
暂无评论
Jenkins与SonarQube集成部署,自动化代码质量监控_轶天下事_InfoQ写作社区