首先,做个说明。本人纯小白,报名参加了 xxxx 移动测试培训课程。根据课程内容 Jenkins 及 sonar 视频在本地进行搭建。上课老师都是用的高大上的水果机,本人及公司均用的 Windows。看视频的时候,讲师操作起来真的是行云流水,看的眼花缭乱。自己本地搭建的时候才发现完全不是那么回事儿~。仅以此来纪念下自己搭建路上踩过的坑,方便以后自己回顾!
然后,当然是来一张效果图了呀:

以上是公司四个平台的扫描结果。iOS 的插件不是社区版的,所以 iOS 的结果基本无效。去研究了一下如何扫描 iOS 的项目。貌似除了花钱买付费版,就要用水果机弄(还是花钱
~)
下面正式进入操作步骤(soeasy):
第一步:Jenkins 安装
1.下载安装包。官网地址 https://jenkins.io/download/ 下载 for Windows 版本。
2.解压后直接安装。(安装前需要先在电脑里安装 jdk。jdk 我想基本是个测试都会装的有,略过不表)
安装过程如下:
a.点击 Jenkins 的 msi 文件直接安装:(图片来源于网络)

b.安装完了之后打开本地网址:http://localhost:8080
c.打开网址时会需要解密:(图片来源于网络)

d.解密之后会进入插件安装页面。选择需要安装的插件等待安装即可。
e.插件安装完之后设置账号密码,即可进入 Jenkins 首页。

f.然后就可以创建项目,构建项目了(貌似这里一句话带过有点不好)
第二步:安装 sonar
1.下载 sonarqube 网址:https://www.sonarqube.org/
2.下载后选择文件夹解压即可
3.配置 bin 目录到 path 路径
4.如果不使用 mysql 可以直接打开http://localhost:9000sonar 网页地址即可查看
5.如果需要使用 mysql 需要去单独下载安装。网址:https://www.mysql.com/
6.下载安装之后创建数据库,配置数据库
7.修改 sonar 配置文件中关于 mysql 的配置项。
8.下载 sonar-scanner(部分网络上文章显示安装 sonar-runner。scanner 由 runner 改名而来。PS:我曾天真的以为安装完 sonar 就可以直接扫描了。)
9.配置 sonar-scanner。配置 sonar-scanner 的数据库信息:数据库名称,账号,密码。以及访问 sonar-qube 的网址,账号,密码
10.将 sonar-scanner 的 bin 目录添加到 path 目录
11.按照官网说明执行项目扫描
第三步:集成 jenkins+sonarqube
1.在 jenkins 系统配置中加入 sonar-server。按照选项输入 sonar 地址,登录账号、密码即可
2.在 jenkins 工具配置中加入 sonar-scanner。
3.以上两步完成后构建项目时选择构建操作为 sonar-scanner。查看构建结果时即可关联至 sonar-qube
以上,按照顺序即可搭建完成一套本地基于持续集成(加上 Git)的代码扫描系统平台。是不是很简单,是不是很容易,然而并不是这样~
下面罗列下遇到的各种自己把自己蠢哭的坑:
1.启动 sonar 失败(是不是有人要问了这也能遇到坑?)
在上述 sonar 安装步骤中下载解压之后,sonar server 是直接进入对应系统的文件夹,双击打开 sonar-qube.bat 就可以启动成功的。然而事实并不是如此……
a.所有的配置都好了之后,输入网址 http:localhost:9000.然后:没打开。回去找了日志,有四份日志。到配置文件里面看了半天才明白那几份日志分别是什么日志。
a1.端口号冲突。9000 被占用了(因为我实在本地搭建的,公司自己搭建了一套 Jenkins+sonar 的服务。貌似是这个原因),在配置文件中改变端口号。这个错误就不报了
a2.java 进程被占用。任务管理器退出所有 Java 的程序,然后还是不行。cmd 查看所有 Java 占用的进程,逐一 kill 掉。有些杀不掉的使用强制停止命令。
a3.127.0.0.1ping 通之后返回 ::,不是常见的丢包率 0%,时间 XXms.查询之后知道是系统网络协议优先级 IPV6 比 IPV4 高,所以默认先使用 IPV6。https://blog.csdn.net/AmberTian/article/details/70238020
(粗暴的解决方案是,卸载 IPV6。不过我没试过)参照网络命令在 cmd 中修改网络协议优先级之后。终于打开了久违的启动页面。(好激动)

2.启动 jenkins 失败
a1.Jenkins 跟 sonar 同样遇到 IP 的那个问题

3.重启 sonar 失败
a1.关掉 sonar 之后,正常点击.bat 文件。然后~~直接 stop 掉了。去看日志,发现还是 Java 的问题,重复去干掉运行中的 Java 进程,重启就好了

4.重启 jinkins 失败
a1.关掉 Jenkins 网站之后就不知道怎么打开了~~蜜汁尴尬。然后我度告诉我要 war 包,在安装目录下全局搜索都没找着的样子,又重新去官网下了个。然后在 cmd 中用 war 包启动。(我觉得正确的应该不是这种操作,后续待继续学习)

5.mysql 的各种坑
a1.自带的数据库肯定满足不了我们的需求啦,自己下一个肯定是必须的啦。各种教程里面都是有数据库的配置命令啦。好简单,麻溜的装好了 MySQL server,配置好了数据库。然后启动 sonar,然而总是报无法连接到数据库。久查无果之后,我重新装了 MySQL(降低了几个版本),重复了安装配置的动作,然后重新启动成功了,成功了!!简直不敢相信
a2.配置的过程中顺带了解了一波数据库的操作,权限设置,命令行操作等。最主要的是我第一天回去没关机,第二天来的是否 sonar 无法启动了。查询之后得知是数据库连接时间超时了。需要重新设置时间。mysql>set global wait_timeout = 2880000;

6.扫描的各种坑
a1.扫描最主要的坑在于扫描的语言设置,分别扫描了 web,Android,iOS,系统后台。然后扫完了之后发现,结果大相径庭。web 基本没有 Bug,Android 基本没有 Bug,iOS 也基本没有 Bug。因为 web 的语言格式不对,Android 的扫描方法不对,需要加项目引导文件,iOS 的 sonar 插件是付费的,付费的~~~

7.jenkins 构建项目配置的各种坑
a1.配置了 Git 的地址跟账号,连不上~~怎么解决的呢?想不起来了。
a2.连上了之后构建项目一直在失败,目前还未解决这个问题。sonar 的配置有点问题,目测是版本匹配的问题。后续继续研究解决。
8.满满的都是泪
(放在草稿箱 N 久了,最近换工作一直没编辑。后续采坑记录待补充。 )


↙↙↙阅读原文可查看相关链接,并与作者交流