Jenkins+Sonar集成打包发布与代码检测分析

Jenkins IT敢客 8个月前 (04-03) 8603次浏览 已收录 4个评论 扫描二维码
文章目录[隐藏]

一、软件环境

操作系统 :centos 7.2

Mysql :5.7.21

SonarQube :5.6.7

Sonar-Scanner :3.1.0

Jenkins :2.107.1

 

二、安装 Mysql

推荐使用 yum 安装,

1、删除老的 mysql,

rpm -qa | grep mysql 或者 yum list installed | grep mysql

使用 rpm -e  ***.rpm 来或者 yum remove xxx 来卸载 rpm 包

2、安装 mysql 源并安装 mysql5.7

wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
yum install mysql-server –y

安装完成后如果mysql服务没有起来则启动service mysqld start

然后grep “password” /var/log/mysqld.log 找到临时密码登录mysql

进入后,第一次好像需要更改root密码,

 

alter user root@’%’ identified by ‘your password’;
flush privileges;

 

三、安装 SonarQube

官方网站下载SonarQube :5.6.7,解压到/usr/local/下面,然后创建数据库 sonar 和用户 sonar

注:SonarQube5.6.7 版本用 root 用户可以启动,后面的版本 root 会失败,所以才选了 5.6.7 版本

create database sonar character set uf8 collate utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;

修改/etc/profile,在末尾添加下面内容

#sonar profile
export SONAR_HOME=/usr/local/sonarqube-5.6.7
export PATH=${SONAR_HOME}/bin:${PATH}

然后 source /etc/profile 生效

修改/usr/local/sonarqube-5.6.7/conf/sonar.properties

sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.driverClassName:com.mysql.jdbc.Driver

保存退出后,启动 sonarqube

sh /usr/local/sonarqube-5.6.7/bin/linux-x86-64/sonar.sh start

开启 9000 端口的防火墙

firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd –reload
firewall-cmd --zone=public --query-port=9000/tcp
firewall-cmd --list-all

 

然后浏览器中打开 http://yourip:9000/能正常出现页面,

Jenkins+Sonar 集成打包发布与代码检测分析

由于是英文的,网上也有汉化补丁,

cd /usr/local/sonarqube-5.6.7/extensions/plugins
wget https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.11/sonar-l10n-zh-plugin-1.11.jar
sh /usr/local/sonarqube-5.6.7/bin/linux-x86-64/sonar.sh restart

重启完,再次打开就是中文的,如下图所示

Jenkins+Sonar 集成打包发布与代码检测分析

四、安装 Sonar-Scanner

下载 sonar-scanner-3.1.0,然后解压到/usr/local/目录下,

修改/etc/profile 末尾添加如下内容

#sonar-scanner profile
export SONAR_SCANNER_HOME=/usr/local/sonar-scanner-3.1.0
export PATH=${SONAR_SCANNER_HOME}/bin:${PATH}

然后 source /etc/profile 使其生效。

然后修改/usr/local/sonar-scanner-3.1.0/conf/sonar-scanner.properties,添加如下内容

sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.sourceEncoding=UTF-8
sonar.login=admin
sonar.password=admin

接着我们就可以用 admin/admin 登录 SonarQube 了。

五、安装 Jenkins

1、推荐使用 yum 来安装,

wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install jenkins

安装完成后,默认是 8080 端口

http://ip:8080/登录

·         Jenkins会随系统启动而启动。详情参照/etc/init.d/jenkins

·         Jenkins会创建一个用户叫做jenkins, 如果你修改了 user,则要修修改所属者:/var/log/jenkins,/var/lib/jenkins,/var/cache/jenkins

·         如果遇到问题,查看日志/var/log/jenkins/jenkins.log

·         配置文件/etc/sysconfig/jenkins

·         默认启用 8080

开启 8080 端口的防火墙

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd –reload
firewall-cmd --zone=public --query-port=8080/tcp
firewall-cmd --list-all

然后登录,更具提示

如果出现 offline 的提示,也就是无法联网安装插件的时候,这时候不要关闭窗口,重新打开一个浏览器标签页,输入http://ip:8080/pluginManager/advanced这里面最底下有个【升级站点】,把其中的链接 https 改成 http 的就好了,http://updates.jenkins.io/update-center.json 然后在服务列表中关闭 jenkins,再启动,这样就能正常联网了

2、安装 SonarQube 插件

登录 jenkins 后,在插件里面搜索 SonarQube,

SonarQube Scanner for JenkinsMashup Portlets安装,接着配置 SonarQube

在系统管理,系统设置全局设置&路径,配置 SonarQube servers信息

Jenkins+Sonar 集成打包发布与代码检测分析

5.3以上版本需要 Token,这个需要登录 sonarqube 去设置一下,如下图

Jenkins+Sonar 集成打包发布与代码检测分析

 

3、配置Sonar-Scanner

进入 jenkins 的系统管理,全局工具配置,配置如下

Jenkins+Sonar 集成打包发布与代码检测分析


配置完毕

六、部署发布任务

1在 Jenkins 项目构建过程中加入 SonarScanner 进行代码分析

新建任务,在构建环境中勾选下面的选项

Jenkins+Sonar 集成打包发布与代码检测分析

我们在构建步骤中增加一个 Execute SonarQube Scanner 步骤

Jenkins+Sonar 集成打包发布与代码检测分析

Jenkins+Sonar 集成打包发布与代码检测分析

配置 SonarQube Scanner 构建步骤,在 Task to run 输入框中输入 scan,即分析代码;在 JDK 选择框中选择 SonarQube Scanner 使用的 JDK(注意这里必须是 JDK 不能是 JRE);Path to project properties 是可选择的输入框,这里可以指定一个 sonar-project.properties 文件,如果不指定的话会使用项目默认的 properties 文件;Analysis properties 输入框,这里需要输入一些配置参数用来传递给 SonarQube,这里的参数优先级高于 sonar-project.properties 文件里面的参数,所以可以在这里来配置所有的参数以替代 sonar-project.properties 文件,下面列出了一些参数,sonar.language 指定了要分析的开发语言(特定的开发语言对应了特定的规则),sonar.sources 定义了需要分析的源代码位置(示例中的$WORKSPACE 所指示的是当前 Jenkins 项目的目录),sonar.java.binaries 定义了需要分析代码的编译后 class 文件位置;Additional arguments 输入框中可以输入一些附加的参数,示例中的-X 意思是进入 SonarQube Scanner 的 Debug 模式,这样会输出更多的日志信息;JVM Options 可以输入在执行 SonarQube Scanner 是需要的 JVM 参数。

2在 Jenkins 项目中使用构建后步骤进行代码分析

使用构建后步骤进行代码分析需要使用 Maven 对代码进行编译,所以需要有 Maven 的配置文件,例如 pom.xml。

为新建的 Jenkins 项目配置构建后操作步骤,在构建后步骤配置窗口中需要填入 Maven 的构建配置 xml 文件,如图所示

新建构建后操作步骤

Jenkins+Sonar 集成打包发布与代码检测分析

配置构建后操作步骤

Jenkins+Sonar 集成打包发布与代码检测分析

看日志输出

Jenkins+Sonar 集成打包发布与代码检测分析

 

注意:上面这个需要在SonarQube平台配置 git 或者 svn 的认证信息,否则会报错。

Jenkins+Sonar 集成打包发布与代码检测分析

七、登录 SonarQube 查看分析结果

Jenkins+Sonar 集成打包发布与代码检测分析

 


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Jenkins+Sonar 集成打包发布与代码检测分析
喜欢 (158)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(4)个小伙伴在吐槽
  1. 我看看?
    Amber2018-04-12 10:30 回复 未知操作系统 | 未知浏览器
  2. IT敢客
    本作者亲自更误:以上配置Analysis properties的内容中,下面两项是只会配置最后一个,多余的前面几条是不生效的,只有最后没的两条记录生效。
    sonar.java.binaries=$WORKSPACE/trunk/crawler-beauty/target/classes/
    sonar.sources=$WORKSPACE/trunk/crawler-beauty/src
    IT敢客2018-04-04 16:20 回复 Windows 10 | Maxthon 浏览器5.2.0.2000
  3. 里面的图片们查看大图么?
    紫风2018-04-03 15:50 回复 Mac OS X | 未知浏览器
    • IT敢客
      手机上看下,电脑上可以看大图的。手机可以缩放的! :grin:
      IT敢客2018-04-03 15:52 回复 Windows 10 | Maxthon 浏览器5.2.0.2000