设为首页 收藏本站
查看: 819|回复: 0

[经验分享] Jenkins 集成 Sonar

[复制链接]

尚未签到

发表于 2018-1-8 14:38:44 | 显示全部楼层 |阅读模式
  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):
## mysql -A -uroot -pMySQL5.7MySQL> CREATE USER 'sonar'@'localhost'>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=f13464a4a4c32f5fa4b075f2247f3d67sudo 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.propertiessonar.web.javaOpts=-server -Xms256m -Xmx768m -XX:+HeapDumpOnOutOfMemoryErrorsonar.jdbc.username=sonarsonar.jdbc.password=Sonar6.2sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false ## 下面设定访问网址为 http://10.21.0.187:9000/sonarsonar.web.host=0.0.0.0sonar.web.port=9000sonar.web.context=/sonar1.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 iptables1.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 再找>

  • 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-*.jarsudo wget https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.13/sonar-l10n-zh-plugin-1.13.jarsudo wget https://github.com/SonarQubeCommunity/sonar-findbugs/releases/download/3.4.4/sonar-findbugs-plugin-3.4.4.jarsudo wget https://github.com/SonarQubeCommunity/sonar-checkstyle/releases/download/2.4/sonar-checkstyle-plugin-2.4.jarsudo wget https://github.com/SonarQubeCommunity/sonar-pmd/releases/download/2.6/sonar-pmd-plugin-2.6.jarsudo wget https://github.com/SonarQubeCommunity/sonar-sonargraph/releases/download/sonar-sonargraph-plugin-3.5/sonar-sonargraph-plugin-3.5.jarsudo /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.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 Plugin
  安装完毕后,进入:系统管理 / 系统设置 / 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 日志来分析:
## cat /opt/sonarqube-6.2/logs/web.logCaused 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 4M2.4 查看报告
  进入登陆 SonarQube 查看:
http://10.21.0.187:9000/sonar
下图展示的只是项目报告首页,每个链接进去能看到详情:

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-432946-1-1.html 上篇帖子: Jenkins持续发布解决方案 下篇帖子: Jenkins与网站代码上线解决方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表