Jenkins集成sonarQube

SonarQube是一款用于自动化代码审查的工具,能检测代码错误、漏洞和不良实践。文章介绍了如何通过Docker安装SonarQube,配置Jenkins进行集成,并创建项目、设置质量阀。在Jenkinspipeline中,SonarQube执行代码扫描并根据质量阀判断扫描结果,确保代码质量。
摘要由CSDN通过智能技术生成

sonarqube的简介

sonarqube是一款自动化代码审查工具,用于检测代码中的错误、漏洞和代码异味。它可以与你现有的工作流集成,以支持跨项目分支和拉取请求的连续代码检查。其工作流程如下:如图

如图sonarqube由以下4个组件组成:

  1. sonarqube server:

    webserver:供开发人员,管理人员浏览高质量的快照并配置sonarqube实例search
    server:基于elasticsearch的search
    server从ui进行后退搜索(历史)computeengine:负责处理代码分析报告并将其保存在sonarqube数据库中

2.sonarqube database: sonarqube实例的配置(安全性、插件设置等)项目、视图等的质量快照。

3.sonarqube plugins:服务器上安装了多个sonarqube插件,可能包括语言,scm,集成,身份验证和管理插件

4.sonarscanners:多种sonar扫描组件,在构建/持续集成服务器上运行以分析项目。

关于sonar的具体介绍可参考其。

2.sonarqube的安装

sonarqube提供了多种,本文将使用docker镜像的安装方式进行演示。

1.拉取sonarqube的docker容器

$> docker pull sonarqube:8.2-community

2.创建docker数据卷
#包含数据文件,例如嵌入式h2数据库和elasticsearch索引
$> docker volume create --name sonarqube_data
#包含插件,例如语言分析器
$> docker volume create --name sonarqube_extensions
#包含有关访问,web流程,ce流程和elasticsearch的sonarqube日志
$> docker volume create --name sonarqube_logs
3.配置本地数据库(示例使用postgresql)

如果使用postgresql的默认schema “public”,则无需这一步。如果想自定义schema,则执行以下命令

alter user mysonaruser set search_path to <自定义的schema名称>

4.启动sonarqube
$> docker run -d --name sonarqube \
-p 9000:9000 \
#以下为给sonarqube的数据库配置,推荐postgresql
-e sonar_jdbc_url=jdbc:postgresql://xxxx:5432/postgres \
-e sonar_jdbc_username=... \
-e sonar_jdbc_password=... \
-v sonarqube_data:/opt/sonarqube/data \
-v sonarqube_extensions:/opt/sonarqube/extensions \
-v sonarqube_logs:/opt/sonarqube/logs \
<image_name>

本地浏览器访问localhost:9000即可访问。

3.sonarqube中创建项目步骤

新建项目 —> 填写项目信息 —>创建令牌 —>记录令牌。
创建项目完成,并且记录下令牌,后续步骤会用到。

4.jenkins配置sonarqube

  1. 安装sonarqube插件
  2. 在jenkins>manage jenkins>global configuration中配置sonar的信息;name为自定义的名字,serverurl为sonarqube的访问地址,最后一项token需要添加。点击添加。
  3. 类型选择 secret text,并将我们在第三步中得到的token填入secret栏,其余栏目自定义。
  4. 添加完后,回到上一步server authentication token选择刚刚添加的token

5.项目中引入sonarqube

以下为maven单模块项目示例:

1.引入sonarqube插件:

<!--添加参数,指定projectkey,即在sonar中创建项目时的名称-->
<properties>
    <sonar.projectkey>sonar-demo</sonar.projectkey>
</properties>
<!--添加sonarqube插件-->
<plugin>
 <groupid>org.sonarsource.scanner.maven</groupid>
 <artifactid>sonar-maven-plugin</artifactid>
 <version>3.6.0.1398</version>
</plugin>

2.手动代码扫描

执行以下命令

mvn sonar:sonar \
-dsonar.projectkey=sonar的项目名称 \
-dsonar.host.url=http://sonar的地址 \
-dsonar.login=第三步记录的令牌

执行完成回到sonarqube界面,可看到扫描记录及结果

6.jenkins pipeline中集成sonarqube

在jenkinsfile中定义代码静态检查的stage
两个stage,1.代码静态检查 2.检查结果分析

⚠️:检查结果分析阶段jenkins通过sonarqube的回调来得知扫描结果,需要在sonarqube中配置webhook

webhook域名为jenkins地址域名。

至此,在jenkins pipeline(流水线)中成功集成sonarqube,如下图:

7.sonarqube自定义质量阀

1.创建自定义质量阀

配置质量阀

例如当阀值过高时,扫描结果不符合阀值要求,扫描结果则会失败。

示例中我们随便调整某个条件至当前项目无法到达的值

此时当pipeline在运行的时候,代码质量检查就会失败,因为没有达到标准。

⚠️:所以,我们在自定义自己项目的阀值的时候要视不同的项目情况而定。

总结

本文介绍了在jenkins多分支流水线中集成sonarqube,从而实现在持续集成中代码质量检查。文章涉及到的某些方面(jenkinsfile,sonarqube详细使用等等)没有详细介绍,只是快速带过了。sonarqube是业界知名度很高的代码检查工具,也是ci/cd中的工具生态成员。深入探索它,还会发现更多有用的,有趣的特性。代码质量检查时代码质量内建的一部分,在流水线中集成代码质量检查可以及时的发现代码中存在的问题和缺陷,从而及时修复问题,防止技术债务的堆积(还是那句话,解决问题最好的时机时问题出现的那一刻),否则当问题堆积到一定程度的时候,修复成本会越来越高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rainbowcheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值