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 Jenkins → Global 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