自动化运维持续集成(CI)和持续发布(CD)系列·SonarQube

SonarQube是一个开源的代码分析平台, 用来持续分析和评测项目源代码的质量,可以检测出项目中的BUG、代码规范和冗余、安全漏洞等问题。

配置数据库

SonarQube需要MySQL数据库,用于保存代码检查结果,因此建议先配置sonarqube所必需的数据库,登录mysql后执行以下sql语句:

CREATE DATABASE sonarqube CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonarqube'@'localhost' IDENTIFIED WITH mysql_native_password BY 'P@ssw0rd';
GRANT ALL PRIVILEGES ON sonarquge.* TO 'sonarqube'@'localhost';
FLUSH PRIVILEGES;

部署SonarQube

0x01 安装SonarQube

访问官网下载地址

# 安装Java
yum -y install java

# 下载 8.9.2 LTS
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.2.46101.zip
unzip sonarqube-8.9.2.46101.zip
mv sonarqube-8.9.2.46101 /usr/local/sonarqube

0x02 配置SonarQube

因sonarqube集成了elasticsearch,因此需要通过普通用户才能启动。

# 创建系统用户
groupadd sonarqube
useradd sonarqube -g sonarqube
passwd sonarqube
chown -R sonarqube.sonarqube /usr/local/sonarqube

修改/etc/security/limits.conf文件,添加或修改以下内容:

* hard nofile 65535
* soft nofile 65535

修改/etc/sysctl.conf文件,添加或修改以下内容:

# 修改并保存
# 然后执行命令:sysctl -p
vm.max_map_count=655350

修改/usr/local/sonarqube/conf/sonar.properties文件:

# 数据库连接信息
sonar.jdbc.username=sonarqube
sonar.jdbc.password=P@ssw0rd
sonar.jdbc.url=jdbc:mysql://10.10.10.201:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
# 调整监听IP地址
sonar.web.host=*

0x03 启动SonarQube

SonarQube支持Linux、Windows、MacOS,在其bin目录中,存放了各操作系统下的启动脚本,以64位Linux操作系统为例:

su sonarqube
cd /usr/local/sonarqube/bin/linux-x86-64

# 启动
./sonar.sh start
# 停止
./sonar.sh stop
# 重启
./sonar.sh restart

启动后,登录sonarqube控制台http://10.10.10.201:9000,然后安装插件,如汉化插件、扫描语言插件等。

部署Sonar-Scanner

如果部署Jenkins集成sonar-scanner,可跳过此步骤,直接参考下一步骤。

1x01 安装Sonar-Scanner

访问官网下载地址

Sonar-Scanner同样支持Linux、Windows、MacOS,根据操作系统下载对应的版本,以64位Linux操作系统为例:

wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip
unzip sonar-scanner-cli-4.6.2.2472-linux.zip
mv sonar-scanner-4.6.2.2472-linux /usr/local/sonar-scanner

1x02 配置Sonar-Scanner

修改/usr/local/sonar-scanner/conf/sonar-scanner.properties文件:

sonar.host.url=http://10.10.10.201:9000
sonar.sourceEncoding=UTF-8

修改/etc/profile环境变量:

SONAR_SCANNER_HOME=/usr/local/sonar-scanner
PATH=$PATH:$SONAR_SCANNER_HOME/bin
export PATH

然后执行以下命令查看效果:

source /etc/profile
sonar-scanner --version

1x03 测试扫描项目代码

在项目所在文件夹创建文件sonar-project.properties,以Java项目为例:

# 项目的唯一标识
sonar.projectKey=demo_java_id
# 显示在sonar中的名字
sonar.projectName=demo_name
# 项目版本
sonar.projectVersion=1.0
# 项目编码
sonar.sourceEncoding=UTF-8
# 需要用到的模块
sonar.modules=java-module

# 模块名称
java-module.sonar.projectName=Java Module
# 项目语言
java-module.sonar.language=java
# 源码目录,.表示projectBaseDir指定的目录
java-module.sonar.sources=.
# 项目路径
java-module.sonar.projectBaseDir=src
# 二进制目录
sonar.binaries=classes

然后在该目录中执行“sonar-scanner”命令即可。

Jenkins集成SonarQube

插件工作流程:Jenkins (调用) Sonar-Scanner (提交审查结果) SonarQube (保存结果数据) MySQL

2x01 创建Token

登录SonarQube,在用户中心安全页面生成一个Tokens,复制token备用。

2x02 安装插件

登录Jenkins,在插件管理可选插件面板中搜索“sonarqube”,安装“SonarQube Scanner”插件。

然后进入Manage JenkinsGlobal Tool Configuration,在SonarQube Scanner段落中点击“新增SonarQube Scanner”按钮,依次填入相应信息,然后保存。需要注意的是:

  • 勾选 Install automatically
  • 选择相应的SonarQube Scanner版本

2x03 配置密钥

进入凭据全局凭据管理页面,新增一个“Secret text”类型的凭据,Secret内容即此前在SonarQube中创建的token,然后输入描述内容即可。

2x04 配置插件

进入Configure System,在SonarQube server段中点击“Add SonarQube”按钮,输入名称和服务器URL,然后选择对应的“Server authentication token”。

原创文章禁止转载:技术学堂 » 自动化运维持续集成(CI)和持续发布(CD)系列·SonarQube

精彩评论

2+4=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏