首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【干货】Jenkins 集成 Sonar 实现量化代码质量管理服务

【干货】Jenkins 集成 Sonar 实现量化代码质量管理服务

作者头像
IT技术小咖
发布2019-06-26 15:54:00
1.2K0
发布2019-06-26 15:54:00
举报
文章被收录于专栏:码上修行码上修行

通常,单一的 Jenkins 对于项目的持续集成够用了。本文总结另外一种流行方案,Jenkins 与 Sonar 集成:Sonar 是 Jenkins 之外独立运行的一个服务。Jenkins 中安装插件 SonarQube(并配置其 Sonar Server 的 URL / AccessToken 等信息),构建完毕后,该插件把报告数据提交给 Sonar Server 解析,Sonar Server 最终以量化图形方式展示代码质量变化。

1 Sonar 服务器的安装

1.1 系统需求

  • JDK8+
  • 内存 2GB+
  • MySQL 5.6+

1.2 安装 MySQL Server

请参考我另外一篇文章:MySQL 安装及其单机多实例部署

准备 sonar 数据库(sonar)和用户(sonar/Sonar6.2):

## mysql -A -uroot -pMySQL5.7
MySQL> CREATE USER 'sonar'@'localhost' IDENTIFIED BY 'Sonar6.2';
MySQL> CREATE DATABASE sonar CHARACTER SET UTF8;
MySQL> GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'localhost';
## mysql -A -usonar -pSonar6.2 -Dsonar -e "SHOW CREATE DATABASE sonar"

1.3 下载 SonarQube(V6.2)

## https://www.sonarqube.org/downloads/
## wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.2.zip ## 下载失败
wget https://fossies.org/linux/misc/sonarqube-6.2.zip ## 125M, MD5=f13464a4a4c32f5fa4b075f2247f3d67
sudo unzip -q sonarqube-6.2.zip -d /opt/
sudo ls -l /opt/sonarqube-6.2/

1.4 修改 SonarQube 配置

## sudo vim /opt/sonarqube-6.2/conf/sonar.properties
sonar.web.javaOpts=-server -Xms256m -Xmx768m -XX:+HeapDumpOnOutOfMemoryError
sonar.jdbc.username=sonar
sonar.jdbc.password=Sonar6.2
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
## 下面设定访问网址为 http://centos:9000/sonar
sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.web.context=/sonar

1.5 启动服务

sudo /opt/sonarqube-6.2/bin/linux-x86-64/sonar.sh stop ## 停止服务
sudo /opt/sonarqube-6.2/bin/linux-x86-64/sonar.sh start ## 启动服务
sudo /opt/sonarqube-6.2/bin/linux-x86-64/sonar.sh restart ## 重启服务
sudo /opt/sonarqube-6.2/bin/linux-x86-64/sonar.sh console ## 控制台启动
sudo tail -f /opt/sonarqube-6.2/logs/sonar.log ## 查看日志

1.6 防火墙放行

### sudo vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
### 重启生效: sudo systemctl restart iptables

1.7 安装插件 SonarQube

浏览器访问 http://centos:9000/sonar,用预设的管理员账号(admin/admin)登陆; 在线安装:进入插件中心 (Administration / System / Update Center / Available Plugins) 找到所需的插件,点击右侧的 “Install” 开始安装;

jenkins sonar-plugins 离线安装:在线安装容易失败,可尝试离线安装,下载插件 jar 文件至插件目录下,并重启 SonarQube 生效; 插件 jar 文件的下载地址,可以到在线安装页找到插件的 Homepage 再找 releases,如下:

  • Git: 已自带安装;
  • SVN: 已自带安装;
  • Java: 已自带安装,Java 源代码解析,计算指标等;
  • JavaScript: 已自带安装;
  • Chinese Pack:SonarQube 页面汉化;
  • Findbugs
  • Checkstyle
  • PMD
  • SonarGraph

插件的离线安装脚本如下:

cd /opt/sonarqube-6.2/extensions/plugins/
sudo rm -rf sonar-csharp-plugin-*.jar
sudo wget https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.13/sonar-l10n-zh-plugin-1.13.jar
sudo wget https://github.com/SonarQubeCommunity/sonar-findbugs/releases/download/3.4.4/sonar-findbugs-plugin-3.4.4.jar
sudo wget https://github.com/SonarQubeCommunity/sonar-checkstyle/releases/download/2.4/sonar-checkstyle-plugin-2.4.jar
sudo wget https://github.com/SonarQubeCommunity/sonar-pmd/releases/download/2.6/sonar-pmd-plugin-2.6.jar
sudo wget https://github.com/SonarQubeCommunity/sonar-sonargraph/releases/download/sonar-sonargraph-plugin-3.5/sonar-sonargraph-plugin-3.5.jar
sudo /opt/sonarqube-6.2/bin/linux-x86-64/sonar.sh restart ## 重启服务
## 注意:不完整的 wget 下载文件必须删掉,否则会导致 SonarQube 启动失败!

1.8 生成认证令牌(Token)

外部系统(比如 Jenkins)访问 SonarQube 时要用到; 进入:Administration(配置) / Security(权限) / User(用户),找到用户 admin,点击 “Tokens” 一列; 弹出界面里:输入 TokenName=”admin”, 点击 “Generate”, 生成 “8687b74188c446f2e02ec6eb5ee9d80b88048406”

1.9 部署至 Tomcat

上面是 Sonar 以独立 server 方式运行,也可以改为集成至 Tomcat:

## 注意修改 $TOMCAT_HOME/bin/catalina.sh 初始内存 1G+
sudo /opt/sonarqube-6.2/war/build-war.sh ## 将sonar达成一个war包
sudo cp /opt/sonarqube-6.2/war/sonar.war %TOMCAT_BASE/web-apps/

2 Jenkins 接入 Sonar

2.1 Jenkins 插件的安装与设置

SonarQube Plugin

安装完毕后,进入:系统管理 / 系统设置 / SonarQube servers, 点击 “Add SonarQube” 按钮:

  • Name: SonarQube-6.2
  • Server URL: http://centos:9000/sonar
  • Server version: 5.3 or higher
  • Server authentication token: 8687b74188c446f2e02ec6eb5ee9d80b88048406(前面 SonarQube 生成的)

Jenkins 会把构建结果通过 URL和认证令牌发送给 SonarQube

sonar jenkins-config

2.2 调整 Jenkins 构建设置

构建设置 Build 中,指定 Maven goals: “sonar:sonar” 项目构建时就会自动上报构建报告给 Sonar

2.3 构建错误排查

构建如有报错,可查看 SonarQube 日志来分析:

## cat /opt/sonarqube-6.2/logs/web.log
Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (6428688 > 4194304). 
You can change this value on the server by setting the 'max_allowed_packet' variable.

含义是 MySQL Server 的参数值设置过小,调整并重启 mysqld:

## sudo vim /etc/my.cnf
## sudo systemctl restart mysqld
[mysqld]
max_allowed_packet=64M ## default 4M

2.4 查看报告

进入登陆 SonarQube 查看: http://centos:9000/sonar 下图展示的只是项目报告首页,每个链接进去能看到详情:

jenkins sonar-report

作者:王克锋

出处:https://kefeng.wang/2017/01/10/jenkins-sonar

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码上修行 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 Sonar 服务器的安装
    • 1.1 系统需求
      • 1.2 安装 MySQL Server
        • 1.3 下载 SonarQube(V6.2)
          • 1.4 修改 SonarQube 配置
            • 1.5 启动服务
              • 1.6 防火墙放行
                • 1.7 安装插件 SonarQube
                  • 1.8 生成认证令牌(Token)
                    • 1.9 部署至 Tomcat
                    • 2 Jenkins 接入 Sonar
                      • 2.1 Jenkins 插件的安装与设置
                        • 2.2 调整 Jenkins 构建设置
                          • 2.3 构建错误排查
                            • 2.4 查看报告
                            相关产品与服务
                            云数据库 SQL Server
                            腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档