Jenkins 与 Sonar 集成:Sonar 是 Jenkins 之外独立运行的一个服务。Jenkins 中安装插件 SonarQube(并配置其 Sonar Server 的 URL / AccessToken 等信息),构建完毕后,该插件把报告数据提交给 Sonar Server 解析,Sonar Server 最终以量化图形方式展示代码质量变化。

1 Sonar 服务器的安装

1.1 系统需求

  • JDK1.8
  • 内存 2GB+
  • MySQL 5.7

1.2 安装 MySQL Server

安装mysql:不介绍

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

1
2
3
4
5
## 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)

1
2
3
4
5
## 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 配置

1
2
3
4
5
6
7
8
9
10
## 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://10.21.0.187:9000/sonar
sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.web.context=/sonar

1.5 启动服务

1
2
3
4
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 防火墙放行

1
2
3
### 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://10.21.0.187: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

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

1
2
3
4
5
6
7
8
9
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:

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

2 Jenkins 接入 Sonar

2.1.1 Jenkins 插件的安装与设置

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

  • Name: SonarQube-6.2
  • Server URL: http://10.21.0.187:9000/sonar
  • Server version: 5.3 or higher
  • Server authentication token: 8687b74188c446f2e02ec6eb5ee9d80b88048406(前面 SonarQube 生成的)
    Jenkins 会把构建结果通过 URL和认证令牌发送给 SonarQube

    sonar jenkins-config

2.1.2 使用jenkins自带的插件安装

  需要安装的插件如下:

  ps:注意JDK环境的配置(jdk的路径)是bin的上级目录

2.2 调整 Jenkins 构建设置

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

2.3 构建错误排查

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

1
2
3
## 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:

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

2.4 查看报告

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

Jenkins 集成 Sonar的更多相关文章

  1. DEVOPS技术实践_11:Jenkins集成Sonar

    前言 前面已经有介绍sonar的安装,简单应用,下面在简答的研究一下sonar和jenkins集成的简单使用,对于sonar的安装不做介绍 一 sonar的简单介绍 持续检查避免了低质量的代码,比如S ...

  2. jenkins集成sonar

    用于我的sonar已经在一台机器上搭建好了,但是每次都要人工去执行sonar-run,很麻烦,所以就想着集成到jenkins上,在jenkins上点点按钮就可以看sonar结果,所以很抱歉,本博客不设 ...

  3. Jenkins集成Sonar Quabe和权限配置

    目录 安装Sonar Jenkins配置sonar Maven Jenkins Job配置 Pipeline Jenkins Job配置 Sonar权限管理 Sonar quality Gate通过阈 ...

  4. jenkins集成sonar代码审核工具

    在项目测试管理过程中,项目上线很多时候时间仓促,导致代码质量不高,测试时间不充分会导致线上出现各种各样的问题,这个时候一方面是增加测试的质量把控,还要从根本上解决开发小哥的代码质量问题.而Sonar这 ...

  5. Jenkins 集成Sonar代码质量扫描

    Jenkins上安装插件 在jenkins插件安装界面安装: 插件名 SonarQube Scanner for Jenkins Jenkins上配置 jenkins中操作:系统管理-系统设置,找到 ...

  6. Jenkins之Sonar 代码检查

    一.简介 SonarQube 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等 ...

  7. Jenkins集成SonarQube遇到的报错

    Jenkins集成Sonar过程中遇到的报错 1.jenkins中无法添加sonarqube的token凭证 因为添加的凭证类型错误,所以无法添加token,类型应该选择"Secret te ...

  8. Jenkins+Gradle+Sonar进行Java项目代码分析

    Jenkins+Maven+Sonar与Jenkins+Gradle+Sonar配置方法很相似,区别就是Java项目所用的编译工具不同,一个是maven,一个是gradle 使用maven编译工具的可 ...

  9. maven+jmeter+jenkins集成

    马上要国庆了,最近比较忙,但是感觉忙的效率很一般,之前写过ant的集成,这两天研究了下maven,其中核心的插件便是jmeter-maven-plugin,要想了解更多的朋友,可以自行去官网wiki学 ...

随机推荐

  1. Android Studio 安装在Windows10中的陷阱

    操作系统:Windows 10 Pro CPU:AMD IDE:Android Studio 2.0 JDK:8.0 安装完AS(Android Studio)之后,运行AS发现无法启动模拟器,提示“ ...

  2. Python【关联接口的开发】

    import flask,time,json,hashlib,redis print("==============被调函数部分================")def my_m ...

  3. OpenLDAP介绍和安装

    LADP 1.目录服务 目录是一个为查询.浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样.目录数据库和关系数据库不同,它有优异的读性能,但写性 ...

  4. python中的文本操作

    python如何进行文本操作 1.能调用方法的一定是对象,比如数值.字符串.列表.元组.字典,甚至文件也是对象,Python中一切皆为对象. str1 = 'hello' str2 = 'world' ...

  5. 遇到can not resolve app 依赖包的问题

    1.第一种解决方式:build->sdkmannger->sdk tool ->安装android support responsitory和google responsitory ...

  6. uploadify IE11 不兼容问题(不显示图片)

    1.进入uploadify官网demo  :  http://www.uploadify.com/demos/ 2.  显示   (确认flash为最新版本) 3.更换其它浏览器一切正常 4.原因:I ...

  7. 阮一峰:自适应网页设计(Responsive Web Design)别名(响应式web设计)

    随着3G的普及,越来越多的人使用手机上网. 移动设备正超过桌面设备,成为访问互联网的最常见终端.于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页? 手机的屏幕比较小,宽度通 ...

  8. SpringCloud微服务简介(一)

    Spring Cloud简单认识 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及部署,并通过 ...

  9. 让页面无刷新的AJAX、ASP.NET核心知识(9)

    AJAX简介 1.如果没有AJAX 普通的ASP.Net每次执行服务端方法的时候都要刷新当前页面,如果没有ajax,在youku看视频的过程中,就没法提交评论,页面会刷新,视频会被打断. 2.说说AJ ...

  10. backup服务器之rsync服务

    backup服务器之rsync服务   rsync是开源的.快速的.多功能的可实现全量及增量的本地或远程数据同步备份的优秀工具.它拥有scp.cp的全量复制功能,同时比scp.cp命令更优秀.更强大. ...