CI-持续集成:⑤-jenkins 集成sonarqube

本文详细介绍如何在CentOS 6.7上安装配置Jenkins、MySQL、SonarQube和Sonar-Scanner,并实现与Jenkins的集成,包括用户权限、数据库配置、SonarQube及扫描器安装步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件需要: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.心痛的提示:每一步完成后最好都做快照,可以回退,不然出了棘手的问题时,就不好了····

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值