说在前面的话: 从接到任务到完成共用了7天的时间。正常人用不到这个时间。 此时的功能表现是: 登录本地JenKins对项目进行构建,能够自动从SVN读取最新代码并按照Maven项目构建,构建完成能够自动使用SonarQube分析代码质量,并将构建的War包部署到指定容器中。

版权声明:此博客纯手打,个人创作,转载请注明出处

导图:

环境准备:MySQL5.7、 Tomcat7.0.93、Tomcat8.5.30、JenKins2.160、SonarQube7.6+Sonar Scanner3.3.0、Maven3.3.3、SVN1.8.22、Window10

环境需要注意的地方:SonarQube对数据库的版本要求相对比较严格,请配置版本对应的SonararQube+MySQL,其他的版本搭建过程中暂没有发现异常。

查看SonarQube支持的MySQL版本:在SonarQube的解压缩文件夹中的conf文件夹中打开sonar.properties配置文件,找到带有MySQL字样的注释,会看到“#----- MySQL >=5.6 && <8.0” 或者 “#----- MySQL 5.6 or greater”。 意思是版本在5.6和8.0或者5.6以上。 这里建议尽量将MySQL版本靠近但不是下限的版本,我的之前装的8.3的后来不能用又卸载重新安装的5.7;  如果自己不想装数据库,SonarQube自带的有MySQL数据库,自带的没有用过,过程请另找资料。 其他数据库与此类似。

MySQL配置

第一步:用工具或者控制台创建MySQL用户并给权限(表和视图的创建、用户的创建、索引的创建等权限,这里推荐使用Navicat工具比较方便)。

第二步:用第一步创建的用户登录MySQL并创建名为sonar(可以自定义)的数据库。

至此MySQL配置完成!

SonarQube安装

第一步:进入SonarQube解压缩文件夹的bin文件夹运行StartSonar.bat文件,打开浏览器输入localhost:9000  出现如下图表示安装成功

下面就是配置SonarQube

SonarQube配置

第一步:配置SonarQube数据库连接参数--> 在SonarQube解压缩的conf文件夹中找到sonar.properties配置文件,在有MySQL注释的下方添加如下配置

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

sonar.jdbc.url是数据库了解的驱动;其中的sonar指的是上面创建的MySQL数据库的数据库,其他参数不变

sonar.jdbc.username和sonar.jdbc.userpassword指的是上面创建的数据库用户和密码, 注意:不要试图去用MySQL数据库的root用户配置连接参数,这里告诉你行不通。

sonar.login和sonar.password指的是一会儿启动SonarQube之后登陆用的账号密码;可以自定义

第二步:进入SonarQube解压缩文件夹下的bin目录找到对应系统的文件夹进去之后分别执行 InstallNTService.bat(以管理员身份运行)、StartNTService.bat(以管理员身份运行)、StartSonar.bat对数据库进行初始化;第一次运行StartSonar.bat时可能会秒退,如果没有秒退那就更好;如果秒退那么进入SonarQube解压缩文件夹下的logs文件夹打开sonar.log日志文件看是否有报错,如果没有报错那么说明SonarQube已经启动,接下来查看MySQL数据库SonarQube连接的用户下是否有一下表

如果上述一切正常,这时候就可以打开浏览器输入地址 localhost:9000 来登录SonarQube了。第一次登录时需要初始化数据库需要等待一会儿。

常见异常说明:在启动SonarQube的时候,如果有异常控制台也会秒退,这个时候就要去sonar.log文件查看异常信息,如果异常是“远程主机断开了一个连接”, 那就是SonarQube初始化数据库的时候有异常,这时候就去解压缩文件夹下的logs文件夹中的web.log文件查看具体的报错信息; 我见到的异常是SonarQube执行的SQL语法不对,开什么玩笑sonarqube作者还能把sql写错了?。 实际就是MySQL版本不对导致的。这个时候就要考虑换MySQL了。

第三步:安装常用插件按照下图

搜索chinese Pack,安装中文语言包, 有的war包已经默认的有中文插件包,那么此步就可以略过了。装完插件重启JenKins即可

重启方法: 在启动的控制台按ctrl+c输入y回车即可停止SonarQube ,再次运行StartSonar.bat文件即可。

第四步:进行项目分析

说明: SonarQube项目分析分为两种,一种是用SonarQube本身的命令; 另一种是用SonarQube的Sonar Scanner扫描仪进行分析; 前一种配置太繁琐,我就没有深究;我用的第二种;

1. 下载Sonar Scanner扫描仪

将文件解压缩,可以放置到任意目录下。

2. 配置Sonar Scanner环境变量

在path中添加 D:\Desktop\sonar-scanner-cli-3.3.0.1492-windows\sonar-scanner-3.3.0.1492-windows\bin 此目录指的是Sonar Scanner解压缩文件夹的bin目录。

3. 在要分析的项目中与pom.xml同级目录中创建sonar-project.properties配置文件,文件内容如下

# must be unique in a given SonarQube instance
sonar.projectKey=personnel-data-sys-1
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=personnel-data-sys
sonar.projectVersion=1.0 # Path is relative to the sonar-project.properties file. Replace "/" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=web.dao/src,web.pojo/src,web.service/src,web.vo/src sonar.java.binaries=D:/Eclipse-jee-2018-09/WorkSpace/HuiMeng(HeNan)/trunk/personnel-data-sys/personnel-data-sys/personnel-data-sys/web.dao/target/classes,
D:/Eclipse-jee-2018-09/WorkSpace/HuiMeng(HeNan)/trunk/personnel-data-sys/personnel-data-sys/personnel-data-sys/web.pojo/target/classes,
D:/Eclipse-jee-2018-09/WorkSpace/HuiMeng(HeNan)/trunk/personnel-data-sys/personnel-data-sys/personnel-data-sys/web.service/target/classes,
D:/Eclipse-jee-2018-09/WorkSpace/HuiMeng(HeNan)/trunk/personnel-data-sys/personnel-data-sys/personnel-data-sys/web.vo/target/classes
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

参数说明:

  sonar.projectKey: 指的是分析的项目上传到SonarQube之后的唯一凭证, 自定义。

  sonar.projectName:  指的是分析的项目上传到SonarQube之后的名称,自定义。

  sonar.projectVersion: 版本号,自定义

  sonar.sources:  被分析的源码的位置,切记这个路径只能是相对路径,相对此配置文件的路径。 多个路径用英文逗号隔开

  sonar.java.binaries:  被分析的源码的class文件的路径。这个可以是绝对路径。就是本地从svn检下来的项目的路径。如果没有,用maven命令编译一下项目生成即可。或者用eclipse编译也行。只要把class文件弄出来就行

  sonar.sourceEncoding: 编码

上述参数配置完之后, 打开控制台,将路径切换到项目的pom.xml所在的目录下,执行 sonar-scanner 命令提示成功之后, 登录SonarQube就会看到分析的结果。

其他的扫描仪的用法请参见官方文档: https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

至此单独的SonarQube就可以使用了。

JenKins篇

JenKins下载安装配置

JenKins的安装有两种形式, 一种是安装包的形式,另一种是war包的形式,这里介绍war包的形式。

从登录官网下载JenKins.war; 将war包原封不动的拷贝到Tomcat的webapps文件夹下,启动Tomcat。访问localhost:8080/jenkins,出现下图即可以正常使用jenkins了

第一次登录jenkins时需要解锁jenkins。  就是找到上图红色字体路径的文件复制里面的密匙。到下方文本框,点击ok即进入插件安装界面,如下图。

点击安装推荐的插件,进行插件的安装,如果是刚入门难,建议安装推荐的插件。如果不想安装推荐的,那么就选择右边这个自己选择安装的插件。如果安装推荐的插件会进入下图

一般情况下推荐的插件中就有中文包,如果没有那么就去“系统管理-->插件管理-->可选插件(第二个),搜索Localization: Chinese(不同版本的jenkins可能名字不同), 选择Localization: Chinese (Simplified)安装即可,”等待所有的插件安装完成,进入创建用户的界面,如下图

创建完用户之后,就进入了首页, 下面开始常用工具的配置, 进行工具配置的前提是要安装了相应的插件, 如Maven等,否则就不会有相应的选项

在“系统管理-->插件管理”的“可选插件”中搜索  Maven Integration plugin  点击进行maven插件的安装。 JDK就搜索 JDK Tools plugin进行JDK插件的安装

点击JDK安装

填写参数

往下找,找到maven配置项,如下图

点击maven安装

暂时先配置这两个工具。

JenKins的使用

点击新建任务

如果没有“构建maven项目 ”这个选项,说明Maven Integration plugin这个maven插件没有安装,去装一下maven插件即可。

下面进行参数配置,各个参数的详解如下图。

参数填写完成,保存之后,回到首页, 构建项目,如下

在此处查看日志输出。

到最后提示  SUCCESS 成功之后,标识项目构建完成,恭喜你jenkins可以正常使用,当然了仅仅完成构建是没有任何意义的,下面要让Jenkins构建完成后可以自动将war包部署到tomcat容器

JenKins自动部署war包到Tomcat配置

思路:在构建之前运行windows命令停掉tomcat,;在构建完成之后,将构建生成的war包拷贝到目标tomcat的webapps目录下,再执行windows命令启动tomcat

说明:这个时候不能把war包部署到jenkins所在的tomcat了,因为在构建之前要停掉tomcat如果与jenkins配置同一个tomcat,那么Jenkins的tomcat停了jenkins就无法工作了

这个时候就要再用一个tomcat,但这时会有一个问题就是,两个tomcat的启动和停止脚本不能各自识别自己的tomcat,会出现运行任一个停止的脚本,就会把启动着的tomcat停掉,而不作区分;如果执行启动脚本,那么第二个启动的会端口冲突。解决办法如下

1.  配置环境变量为:CATALINA_HOME1=D:\Desktop\apache-tomcat-7.0.93(部署war包的tomcat的解压缩文件夹根目录)

CATALINA_BASE1=D:\Desktop\apache-tomcat-7.0.93(部署war包的tomcat的解压缩文件夹根目录), 与CATALINA_HOME1的值相同,

并且要为jenkins所在的tomcat配置CATALINA_BASE=D:\Tomcat\apache-tomcat-8.5.30

所在就会有如下环境环境变量

jenkins所在的tomcat

CATALINA_BASE=D:\Tomcat\apache-tomcat-8.5.30

CATALINA_HOME=D:\Tomcat\apache-tomcat-8.5.30

部署项目的tomcat

CATALINA_BASE1=D:\Desktop\apache-tomcat-7.0.93

CATALINA_HOME1=D:\Desktop\apache-tomcat-7.0.93

找到部署项目的tomcat的bin文件夹下的startup.bat和shutdown.bat文件,将其中的CATALINA_HOME替换为CATALINA_HOME1

找到部署项目的tomcat的bin文件夹下的catalina.bat文件,将其中的CATALINA_HOME替换为CATALINA_HOME1移机CATALINA_BASE替换为CATALINA_BASE1保存即可,

这时候即可同时启动两个,并且停的时候也只停相应的。

在path环境变量中添加  %CATALINA_HOME1%\bin      因为jenkins所在的tomcat不需要经常的启动和停止,如果需要停止和启动,手动就行了, 所以这里配成了部署项目的tomcat

JenKins配置如下;

项目构建之前执行命令

项目构建完成后执行命令

配置完命令,之后再去配置 构建参数如下图

配置此参数的原因是,如果单单的配置构建完成之后执行启动tomcat的命令,那么jenkins就会以衍生线程来开启控制台执行命令,但是当jenkins构建完成,默认就会把当前线程和所有的衍生线程全部杀掉,那么这时候就会导致启动的tommcat被杀掉,那么tomcat还是没有启动起来。  添加此参数的作用就是,改变衍生线程的ID, 让jenkins在构建完成之后,无法识别启动tomcat的线程是自己的衍生线程就可以了。  此参数不能再“系统管理-->节点管理”添加环境变量中配置,在那配置的话会导致jenkins一直等待启动tomcat的线程结束,并且Jenkins认为这个不是衍生线程也不会杀掉,就会一直等待,直到构建失败。

只是做这些还是不够,如果编译报出 此处不应有=2048"" 字样,原因是jenkins执行脚本的时候把一个双引号会转义为两个双引号。 打开tomcat下的bin目录中的catalina.bat文件,搜索2048, 将2048的引号去掉,如下

if not "%JSSE_OPTS%" == "" goto gotJsseOpts
set JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
:gotJsseOpts
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"

变为

if not '%JSSE_OPTS%' == '' goto gotJsseOpts
set JSSE_OPTS=-Djdk.tls.ephemeralDHKeySize=2048
:gotJsseOpts
set JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%  即可。

如果没有报错,那就不用做此修改。

到此jenkins自动部署项目完成。

JenKins集成SonarQube

集成之后的效果是,当构建完成之后,自动检测代码质量,并上传检测结果到sonarqube。这里也使用Sonar Scanner扫描仪进行集成

登录sonarqube生成token

点击Administrator->security->user,点击token按钮,输入key后再点击generate进行生成, 并保存好。

安装SonarQube Scanner for Jenkins 插件

对jenkins进行配置

安装完成后,在 系统管理->系统设置中,找到SonarQube servers模块,填写服务器信息:

其中Server authentication token 就是上面登录sonarqube生成的token. 拷贝进来即可。

“系统管理-->全局工具配置”

点击安装,如下图

注意配置的是Sonar Scanner扫描仪的路径,可不是Sonarqube的路径。

对项目进行配置

配置完成之后,保存。 构建项目,如下

构建成功之后,如下图点击即可查看检测结果,如果没有这个选项,说明集成失败。

  

Tomcat+Jenkins+SonarQube+SVN+Maven 集成自动化环境搭建(Windows10环境下)的更多相关文章

  1. jenkins+docker 持续构建非docker in docker jenkins docker svn maven

    工欲善其事必先利其器,为了解脱程序员的,我们程序员本身发明了很多好用的工具,通过各种工具的组合来达到我们想要的结果 本文采用jenkins docker svn maven作为相关工具,项目sprin ...

  2. JDK开发环境搭建及环境变量配置

    Java配置----JDK开发环境搭建及环境变量配置 1. 下载安装安装JDK开发环境 http://www.oracle.com/technetwork/java/javase/downloads/ ...

  3. Ubuntu 16.04 Go环境搭建 Go环境+Sublime配置

    Ubuntu 16.04 Go环境搭建 Go环境+Sublime配置 1. 安装Go 下载地址https://golang.org/dl/ (需要翻下) 下载到类似go1.8.3.linux-amd6 ...

  4. Android 程序分析环境搭建-开发环境搭建

    1.1  JDK 安装 JDK 的配置,初学java 开发,那是必须会的. 下载,遇到的问题就是要注册oracle 的账号,还有你要下载特定版本,比如jdk 1.7,jdk 1.6,很难找到在哪里.解 ...

  5. Jenkins实现SVN+Maven+Java项目的持续集成

    Jenkins 2.46.1 Centos 7.3 JDK 7 安装jdk/maven/svn 在Jenkins所在的Linux机器安装jdk和maven,步骤就不说了,下面是环境变量: export ...

  6. Jmeter学习一:Jmeter性能测试环境搭建(Windows下)

    最近刚开始接触Jmeter性能测试,现总结环境搭建如下: 一.windows安装JDK步骤与环境变量配置: 1.先将下载的JDK安装到其默认目录:C:\Program Files\Java\jdk1. ...

  7. webpack环境搭建开发环境,JavaScript面向对象的详解,UML类图的使用

    PS:因为所有的设计模式都是基于面向对象来完成的,所以在讲解设计模式之前先来过一下面向对象都有哪些知识点 搭建开发环境 初始化npm环境 下载安装nodejs安装即可,nodejs自带npm管理包,然 ...

  8. Android 程序分析环境搭建-动态分析环境搭建

    静态查看过app 的代码,但是有些app 非常复杂,页面好多,你根本找不到从何处下手.还有app 通过静态分析,发现有被加固(后续会讲如何砸壳),根本找不到,还有即便你搜索app界面上的文字,你也搜索 ...

  9. Android 程序分析环境搭建-静态分析环境搭建

    1.2 静态分析环境搭建 这里主要讲一些用的比较顺手的工具,一并列出来,Uaa,等环境配置, 2,notepad++ ,everything , Jdgui ,idea, ida ,Fiddler , ...

随机推荐

  1. linux地址映射1、2、3(⭐⭐⭐)

    欢迎关注瘋耔新浪微博:http://weibo.com/cpjphone 一.线性映射与非线性映射                                                   ...

  2. bzoj3462: DZY Loves Math II

    状态很差脑子不清醒了,柿子一直在推错.... ... 不难发现这个题实际上是一个完全背包 问题在于n太大了,相应的有质数的数量不会超过7个 假设要求sigema(1~plen)i pi*ci=n 的方 ...

  3. 简单的JDBC编程步骤

    1.加载数据库驱动(com.mysql.jdbc.Driver) 2.创建并获取数据库链接(Connection) 3.创建jdbc statement对象(PreparedStatement) 4. ...

  4. android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)

    在做一个view背景特效的时候被坐标的各个获取方法搞晕了,几篇抄来抄去的博客也没弄很清楚. 现在把整个总结一下. 其实只要把下面这张图看明白就没问题了. 涉及到的方法一共有下面几个: view获取自身 ...

  5. php中自运算++ 或-- 的总结

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  6. [Selenium] 如何使ChromeDriver 每次启动的端口不会随机变化

    ChromeDriver  在不指定任何参数的情况下,启动监听端口会随机变化.如果需要保证其端口固定不变,可通过ChromeDriverService 打的目的 public class testCh ...

  7. zepto.js 总结

    zepto.js 中的注意事项 ,详见:http://www.cnblogs.com/samwu/archive/2013/06/06/3121649.html zepto被弃用的原因:详见:http ...

  8. 安装Tomcat(windows系统和linux系统)

    Tomcat不管是windows还是Linux版本,都是解压后就再配置一下就可以使用.安装Tomcat前必须先安装JDK,一般我们可以在eclipse中加入Tomcat来开发. 什么是Tomcat? ...

  9. HDU 1270 小希的数表 (暴力枚举+数学)

    题意:... 析:我们可以知道,a1+a2=b1,那么我们可以枚举a1,那么a2就有了,并且a1+a3=b2,所以a3就有了,我们再从把里面的剩下的数两两相加,并从b数组中去掉, 那么剩下的最小的就是 ...

  10. 关于git本地已有项目

    终于要开始彻底掌握git了,第一步自然是自己建个test repository.然而,目前只学到git init, git clone啊.都没说怎么上传本地已有仓库,网上一搜吧,全是坑人的,标题还写的 ...