软件需要:jenkins + mysql + sonarqube + sonar-scanner
OS:CentOS 6.7
1. jenkins的安装 ,前面的博客已经进行了详细的描述,如你已经安装,请跳过:
java 升级至1.8:https://blog.youkuaiyun.com/FBX_fbx_FBX/article/details/81170895
jenkins 安装:https://blog.youkuaiyun.com/FBX_fbx_FBX/article/details/81188926
jenkins部署:https://blog.youkuaiyun.com/FBX_fbx_FBX/article/details/81196866
jenkins邮件配置:https://blog.youkuaiyun.com/FBX_fbx_FBX/article/details/81234634
2. mysql 的安装:
感谢这一篇非常好的帖子,完全可以无脑跟随,附上:
转:https://www.cnblogs.com/liuyi2614/p/6382183.html
装完之后,进入数据库顺便创建sonar的数据库和用户名密码:
用户名:sonar 密码:sonar
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
mysql> FLUSH PRIVILEGES;
如果你在mysql -u root -p 时,linux提示 conmmad
这是由于linux在识别命令时,自动会去/usr/bin 下面去找,所以,建立一个软连接就好了:
ln -s /usr/local/mysql/bin/mysql /usr/bin/
3. 创建用户
root 用户不能启动sonar 我也不知道为什么·····反正,创建一个新的虚拟机用户:
#创建一个名为sonarqube的用户组和一个用户名为sonarqube密码为sonarqube的用户
groupadd sonarqube
useradd sonarqube -g sonarqube -p sonarqube
4.SonarQube 的安装
本次参考的是SonarQube 6.7.4 的版本,进入sonarqube 官网下载地址:https://www.sonarqube.org/downloads/
下好后上传至虚拟机 的/opt 目录
解压 sonarqube 至当前文件夹
cd /opt
unzip sonarqube-6.7.4.zip
#为上述创建用户分配文件夹权限
附/opt 目录权限是因为我的sonarqube和sonar-scanner都装在这里
附 /usr/bin 目录权限是因为sonar-scanner的软链接在这里,我需要运行
(我没试过不赋予/usr/bin 目录权限的情况,大家可以试试)
chown -R sonarqube:sonarqube /opt/
chown -R sonarqube:sonarqube /usr/bin
进入 sonarqube-6.7.4/conf目录,编辑 sonar.properties
cd sonarqube-6.7.4/conf
vim sonar.properties
增加以下内容:
sonar.jdbc.username=sonar ---数据库生成所对应的
sonar.jdbc.password=sonar ---数据库生成所对应的
sonar.web.javaOpts=-Xmx1024m -Xms1024m -XX:+HeapDumpOnOutOfMemoryError
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
----设置连接本地的mysql
sonar.web.host=192.168.1.185 ----host
sonar.web.context=/sonar ---网址后缀 :http://192.168.1.185:9000/sonar
sonar.web.port=9000 ----访问端口
sonar.updatecenter.activate=true ---用于该工具的插件可正常更新,该版本是注释了的
接下来就去 /opt/sonarqube-6.7.4/bin/linux-x86-64 (linux-x86-64这个目录根据自己系统进入) 编辑它的运行文件:
cd /opt/sonarqube-6.7.4/bin/linux-x86-64
vim sonar.sh
将RUN_AS_USER= 释放开,并改成:
RUN_AS_USER="sonarqube" ---我们刚才创建的那个用户
最后 切换到我们的sonarqube 用户下执行这个运行文件就可以啦:
su sonarqube
cd /opt/sonarqube-6.7.4/bin/linux-86-64/
sh sonar.sh start
sh sonar.sh start #启动sonar
sh sonar.sh stop #安全停止sonar
sh sonar.sh console #控制台启动sonar
在外部进行访问:http://192.168.1.185:9000/sonar 就可以看到界面了
第一次访问都比较慢,因为sonar要创建很多数据表
admin/admin 登录进入啦
引导时。一定要将数据copy下来!!!!!
接下来,可以对页面进行汉化,进入Administrator-my account-应用商场
搜索 Chinese pack 安装重启就好了
汉化的界面会更好看!
5.sonar -scanner 的安装和配置
在进入sonarqube时,通过引导按钮下载 对应系统的sonar-scanner工具
下好后传至虚拟机/opt目录并进行解压,解压后修改一下文件名,这太长了
unzip sonar-scanner-cli-3.2.0.1227-linux.zip
mv sonar-scanner-3.2.0.1227-linux/ sonar-scanner-3.2.0/
进入conf 进行sonar-scanner.properties 文件的配置:
cd sonar-scanner-3.2.0/conf/
vim sonar-scanner.properties
该文件是全局配置,没有必要写得特别细致,简单点:
sonar.host.url=http://192.168.1.185:9000/sonar
sonar.sourceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
设置scanner的环境变量:
#-------sonar-scanner---------
export SCANNER_HOME="/opt/sonar-scanner-3.2.0/"
export PATH="$PATH:$SCANNER_HOME/bin"
然后source一下让环境变量生效!
虚拟机上任意目录输入 sonar-scanner -h 回车,出现一下信息说明已经设置成功了
以上scanner的基础设置 接下来进入项目代码的目录中配置:
进入到我们的项目目录/var/lib/jenkins/workspace_test/
创建该文件(官网也有介绍的):
vim sonar-project.properties
# must be unique in a given SonarQube instance
# this is the name displayed in the SonarQube UI
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
# Encoding of the source code. Default is default system encoding
sonar.projectName=NMS ---对应sonarqube中的项目名
sonar.projectVersion=1.0 --版本号,可随便,但是也不可随便,要给领导看报告的怎么能随便
sonar.projectKey=NMS ---对应sonarqube中的项目名称最好
sonar.sources=/var/lib/jenkins/workspace_test --项目路径
sonar.sourceEncoding=UTF-8 ---不说自懂
sonar.language=py ---这是我们项目的要分析的语言类型。python
创建完成后,在当前目录输入sonar-scanner 回车,即可进行分析
下图为运行刚开始和运行结束的截图
访问下sonar界面
sonarqube和sonar-scanner的配置就算完成咯!
如果出现很多报错,先去处理一下sonarqube用户的目录的权限,可能会解决很多问题!
6. 集成jenkins
首先进行插件安装:
打开jenkins,在可选插件中搜索"SonarQube"并安装它
如果没有这个插件怎么办?比如我的jenkins里面就没有搜到····好吧,换一个方式·····
首先去这个url下载phi文件: http://updates.jenkins-ci.org/latest/sonar.hpi 这个是sonar最新插件,需要jenkins 2.6以上版本。
版本不匹配的话,还是要升级的哟~~
下好之后去jenkins-管理插件-高级-进行上传
之后前往
系统设置 配置sonarqube的地址和token
全局工具配置中 配置sonar-scanner 配置scanner的路径
系统设置里面:
全局工具配置里面:
填好之后就进入到项目中:
选择构建部分的菜单:
Path to project properties 和 Analysis properties 其实就是一个东西,如果你项目中写了sonar-project.properties 这个文件的,就把路径写在Path to project properties 如果你没有该文件,直接在Analysis properties 中填写即可。但是既然是在jenkins里面,建议还是填写Analysis properties,更为直观嘛,下次看配置文件还要去连接虚拟机看文件,多麻烦~~
附上Analysis properties 配置的文本:
sonar.projectKey=NMS
sonar.projectName=NMS
sonar.projectVersion=1.0
sonar.sources=/var/lib/jenkins/workspace_test
sonar.sourceEncoding=UTF-8
sonar.language=py
sonar.login=admin
sonar.password=admin
好,应用保存后出去构建一下
失败了,说我没有授权,要检查登录名和密码
猜测可能是没有正确是收到sonar的地址,所以用户名和密码都没有作用
加上地址试试
sonar.projectKey=NMS
sonar.projectName=NMS
sonar.projectVersion=1.0
sonar.sources=/var/lib/jenkins/workspace_test
sonar.sourceEncoding=UTF-8
sonar.language=py
sonar.host.url=http://192.168.1.185:9000/sonar --新加的地址
sonar.login=admin
sonar.password=admin
再次构建:
哈哈,成功!
这下你可以通过连接,到sonar界面上去看结果啦~~
被虐的伤心难过的我,做下个人小结,当然也有可能不是正确的,仅供参考吧:
1.装好sonarqube之后,先看看是否可以访问页面,失败了再去看日志,web.log ,还有sonar.log 这两个信息最直观的,解决了,就可以启动,但有些报错无关紧要,解决一个就访问一下试试咯~~
2.如果还是访问不到,你要考虑你的用户的权限,我们sonar是用非root用户sonarqube(举例)启动的,目录以及软连接等等,是否都有它执行的权限
3.mysql数据库是不是装好的,如果删除用户或表,会不会因为表没有删干净导致数据表创建不成功或者连接不成功~~(我之前就是因为数据库数据没有创建好,导致很多奇奇怪怪的问题,google都搜不到答案的那种,心态都崩了)
4.心痛的提示:每一步完成后最好都做快照,可以回退,不然出了棘手的问题时,就不好了····