Jenkins SonarQube 部署
SonarQube 与 Jenkins 简介
SonarQub e 是一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。同时,它提供了丰富的插件,支持多种语言的检测, 如 J ava、Python、Groovy、C、C++等几十种编程语言的检测。它主要的核心价值体现在如下几个方面:
SonarQube7.8 以上必须使用 java11, 不支持mysql
- 检查代码是否遵循编程标准:如命名规范,编写的规范等。
- 检查设计存在的潜在缺陷:SonarQube 通过插件 Findbugs、Checkstyle 等工具检测代码存在的缺陷。
- 检测代码的重复代码量:SonarQube 可 以展示项目中存在大量复制粘贴的代码。
- 检测代码中注释的程度:源码注释过多或者太少都不好,影响程序的可读可理解性。
- 检测代码中包、类之间的关系:分析类之间的关系是否合理,复杂度情况。
SonarQube 平台是由 4 个部分组成:
- SonarQube Server
- SonarQube Database
- SonarQube Plugins
- SonarQube Scanner
SonarQube 与 SonarQube-Scanner 的安装与配置
SonarQube
在 SonarQube 网,我们可以下载最新的 Sonar 安装包,本节以 Linux 系统为例,搭建 SonarQube 平台,解压到任意目录,如:unzip sonarqube5.6.zip。
SonarQube 自带了一个 H2 的数据库,当然为了获得更好的性能我们可以指定一个外部的数据库,在这里我们使用 MySQL 数据库。 先在 Mysql 数据库中建立一 个 Sonar 数据库,主要用于存放分析结果的数据,如 图 1 :
下载:
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.8.zip
创建sonar MySQL 数据库
create database sonar grant all PRIVILEGES on sonar.* to sonar@'%' identified by '123456'; flush privileges;
进入解压的 SonarQueb 目录,在系统路径里面配好 path,配置如下:
修改配置文件 /data/sonarqube-7.8/conf/sonar.properties
,如下:
主要修改3个参数
sonar.jdbc.username sonar.jdbc.password sonar.jdbc.url
Jenkins 与 SonarQube 集成插件的安装与配置
Jenkins 是一个支持自动化框架的服务器,我们这里不做详细介绍。Jenkins 提供了相关的插件,使得 SonarQube 可以很容易地集成。登陆 jenkins,点击”系统管理”,如图 4。
图 4. Jenkins 系统管理
点击管理插件。
Jenkins 管理插件
在可选插件中搜索”SonarQube”并安装它,如图 5。
图 5. Jenkins 安装 SonarQube
插件配置,登录 sonarqube 服务器
http://172.16.230.84:9000 点击右侧账号图标-->我的账号-->安全
输入 jenkins,点击生成。
注意:这个输入框的字符串,可以随意。这里表示给jenkins使用的!切记要保存好!
创建jenkins token
点击 jenkins -->凭据 --> 系统 --> 全局凭据--> 添加凭据
输入在sonarqube中生成的token
配置 SonarQube Server
进入 Jenkins 系统管理 – 系统设置,配置 SonarQube Server 信息
由于 SonarQube 在本机运行,直接就是 http://localhost:9000
进入 Jenkins 系统管理 - Global Tool Configuration,配置 SonarQube Scanner
1. 下载安装
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.4.0.2170.zip unzip sonar-scanner-cli-4.4.0.2170.zip mv sonar-scanner-cli-4.4.0.2170 /data/
输入安装路径
四、项目配置
java
使用构建后步骤进行代码分析需要使用 Maven 对代码进行编译,所以需要有 Maven 的配置文件,例如 pom.xml。
为新建的 Jenkins 项目配置构建后操作步骤,在构建后步骤配置窗口中需要填入 Maven 的构建配置 xml 文件
配置构建后操作步骤
sonar.projectKey=$JOB_NAME sonar.projectName=$JOB_NAME sonar.language=java sonar.login=admin sonar.password=admin sonar.java.binaries=$WORKSPACE/smr-platform-service/smr-biz/target/classes
注意:sonar.java.binaries 表示java的源码路径
参数解释:
Task to run 输入框中输入 scan,即分析代码;
Path to project properties:可选择的输入框,可以指定一个 sonar-project.properties 文件,如果不指定则使用项目默认的 properties 文件;
Analysis properties:输入一些配置参数传递给 SonarQube,这里的参数优先级高于 sonar-project.properties 文件里面的参数,所以可以在这里来配置所有的参数以替代 sonar-project.properties 文件
注:SonarQube Scanner配置可以直接在项目根目录中创建一个文件sonar-project.properties,然后使用Path to project properties中指定属性文件,或者直接在Analysis Properties中配置
Additional arguments:可以输入一些附加的参数,示例中的-X指进入 SonarQube Scanner 的 Debug 模式,输出更多的日志信息
查看分析结果
登录到SonarQube,查看结果
python
sonar.projectKey=$JOB_NAME sonar.projectName=$JOB_NAME sonar.language=python sonar.login=admin sonar.password=admin
vue
#projectKey项目的唯一标识,不能重复 sonar.projectKey=$JOB_NAME sonar.projectName=$JOB_NAME sonar.projectVersion=1.0 sonar.sourceEncoding=UTF-8 sonar.modules=javascript-module sonar.login=admin sonar.password=admin # JavaScript module javascript-module.sonar.projectName=JavaScript Module javascript-module.sonar.language=js javascript-module.sonar.sources=. javascript-module.sonar.projectBaseDir=src
报错处理办法: /data/sonarqube-7.8/temp/ 权限问题, chown -R sonar.sonar /data/sonarqube-7.8/temp/ *
参考资源
https://www.ibm.com/developerworks/cn/devops/1612_qusm_jenkins/index.html
https://www.cnblogs.com/xiao987334176/p/12011623.html