Jenkins+SVN+Maven自动化部署环境搭建
Jenkins+SVN+Maven自动化部署环境搭建
老司机带你撸代码 发表于2周前
Jenkins+SVN+Maven自动化部署环境搭建
  • 发表于 2周前
  • 阅读 3180
  • 收藏 406
  • 点赞 12
  • 评论 12

华为云·免费上云实践>>>   

前言

因今年公司新产品线较多,为了降低耦合,达到业务分离、重用,提高内部开发效率的目的,采用了基于服务组件、前后端分离的架构体系。与之前传统单应用架构相比,系统部署、配置更加复杂,为了能够频繁地将软件的最新版本,及时、持续地交付给测试团队及质量控制团队,以供评审,所以引入持续集成工具Jenkins,从而实现公司新产品持续集成,自动化部署。

环境准备

安装Jenkins

  1. 运行下载好的Jenkins安装包jenkins.msi,选择安装路径,点击”安装“,等待安装完成;

    11

  2. 安装完成以后,会自动启动浏览器,跳转到Jenkins登录页面。第一次启动Jenkins,出于安全考虑,Jenkins会生产一个随机口令文件,表单中会给出管理员口令文件存放的位置,通过Windows+R,调出运行窗口,将存放口令的文件路径粘贴到输入框,点击回车,快速打开文件,将文件中的口令输入到表单中,点“Continue”继续;

    22

  3. 安装Jenkins官方建议的默认插件;

    33

  4. 创建第一个管理员用户,创建完成以后,就可以用这个用户登录到Jenkins系统中。

44

安装插件

下面介绍实际部署中所用到的几个插件,安装方法:系统管理->管理插件。

  • 安装Deploy to container Plugin(自动化部署插件)
  • 安装Maven Integration Plugin(Maven集成插件)
  • 安装Publish Over SSH Plugin(SSH远程发布插件)

注意:因插件安装以后,需要重启Jenkins才能够使用。所以在安装插件时,可以勾选安装完成后重启Jenkins。如果不小心忘记勾选,也没有关系,可以在浏览器网址端口后面输入/restart来重启Jenkins,其它的命令,可参考系统管理->Jenkins CLI。

系统配置

插件安装完成以后,我们需要对系统进行配置。

  1. 首先进行全局配置,系统管理->系统设置:

Jenkins Location配置

Jenkins URL项保持默认即可,填写系统管理员邮件地址。(注意:这个如果不填写的是发送不了邮件的,测试邮件发送时会报:“553 Mail from must equal authorized user”错误。)

55

邮件通知配置

填写“SMTP服务器”、“用户默认邮件后缀”,然后点“高级”,勾选“使用SMTP认证”,填写邮箱用户名、密码和SMTP端口,接着勾选“通过发送测试邮件测试配置”,填写接收邮件的邮箱,点击“测试”,出现“Email was successfully sent”表明邮件通知配置成功。

66

SSH remote hosts配置

SSH远程主机配置,主要用来通过SSH方式远程发布,在后面的章节会详细介绍。

88

Publish over SSH配置

主要是用来通过SSH方式远程发布,在后面的章节会详细介绍。

99

  1. 然后,进入系统设置->Global Tool Configuration:

SonarQube servers配置

10

Maven配置

配置Maven主要是配置Maven的settings.xml文件,Jenkins在构建Maven项目时需要依靠该配置文件来执行Maven,其配置如下:

11

JDK配置

12

SonarQube Scanner配置

13

新建项目

新建一个Maven项目

14

项目配置

###源码管理

15

构建触发器

Jenkins提供了6中构建触发器,分别是:

  1. build whenever a snapshot dependency is built ,当job依赖的快照版本被build时,执行本job;
  2. 触发远程构建 (例如,使用脚本);
  3. build after other projects are built 当本job依赖的job被build时,执行本job;
  4. build periodically 隔一段时间build一次,不管版本库代码是否发生变化,通常不会采用此种方式;
  5. GitHub hook trigger for GITScm polling 通过Github钩子触发;
  6. poll scm 隔一段时间比较一次源代码,如果发生变更,那么久build。否则,不进行build,通常采用这种方式。

16

构建(Build)

调用Maven “clean install”命令。

17

增加一个构建后步骤(自动部署)

因在Windows环境下部署,所以选择Execute Windows batch command。

自动部署的思路:设置全局变量(项目名称,构建新包路径,配置文件路径,Tomcat路径等)->关闭Tomcat->删除Tomcat中旧版本包->拷贝新包到Tomcat应用目录->启动Tomcat(解压包)->关闭Tomcat->替换配置文件->删除War包->启动Tomcat,自己写的脚本代码如下:

@echo off

rem 设置全局变量
set prj_name=estate
set package_path=D:\AutoDeployment\Package
set config_path=D:\AutoDeployment\config
set command_path=D:\AutoDeployment\command
set tomcat_home=D:\tomcat\apache-tomcat-7.0.59

set startup_command=%tomcat_home%\bin\startup.bat
set shutdown_command=%tomcat_home%\bin\shutdown.bat

rem 关闭tomcat
call %shutdown_command%

rem 暂停10s
ping -n 10 127.0.0.1

rem 删除旧包目录
rd /s /q %tomcat_home%\webapps\%prj_name%

rem 新包重命名
d:
cd D:\AutoDeployment\Package\estate
ren register-web.war %prj_name%.war

rem 拷贝新包到发布目录
copy %prj_name%.war %tomcat_home%\webapps

rem 启动tomcat

call %startup_command%

rem 暂停10s
ping -n 10 127.0.0.1

rem 关闭tomcat
call %shutdown_command%

rem 删除war包
rd /s /q %tomcat_home%\webapps\%prj_name%.war

rem 替换配置文件
copy %config_path%\%prj_name% %tomcat_home%\webapps\%prj_name%\WEB-INF\classes

rem 启动tomcat
call %startup_command%

rem 关闭窗口
exit

构建设置(邮件通知)

19

构建测试

点击“立即”构建,maven 打包成功,执行脚本无误以后,整个自动化部署就成功了。

结语

按照以上步骤,可以成功完成自动化部署环境搭建。网上很多教程,在“构建后步骤”这一步直接贴出Execute shell,且未说明是在什么操作系统环境下,注意直接拿来用在Windows环境下面是不行的。Jenkins软件帮助功能做的非常强大,在每一项配置后面,都会有一个帮助菜单,所以当你不确定该项如何填写时,这个菜单是最好的参考工具。后面我将会继续介绍通过SSH远程发布以及Jenkins与SonarQube(开源代码质量管理系统)集成,欢迎一起交流学习。

共有 人打赏支持
粉丝 33
博文 5
码字总数 6344
评论 (12)
风中追枫
SonarQube Scanner执行分析任务的配置怎么没有?
kentxp
回滚如何配置 回滚如何配置 回滚如何配置
万事通
还算比较全面的好文分享,支持点赞支持点赞。
老司机带你撸代码

引用来自“风中追枫”的评论

SonarQube Scanner执行分析任务的配置怎么没有?
后续的更新中会提到,请持续关注
老司机带你撸代码

引用来自“kentxp”的评论

回滚如何配置 回滚如何配置 回滚如何配置
后续的更新中会提到,请持续关注
老司机带你撸代码

引用来自“kentxp”的评论

回滚如何配置 回滚如何配置 回滚如何配置
后续的更新中会提到,请持续关注
KentYoung
建议 停止Tomcat的 命令 使用 : shutdown -force
老司机带你撸代码

引用来自“KentYoung”的评论

建议 停止Tomcat的 命令 使用 : shutdown -force
非常感谢您的建议,在实际应用过程中确实发现了这个问题,如果还没启动完,Tomcat这样是关不掉的,我这边的处理方法是通过下面的命令:

rem 关闭tomcat
set port=8080
@echo find the process which use port [%port%]
for /f "tokens=1-5" %%i in ('netstat -ano^| find ":%port%"') do (
  tasklist /FI "PID eq %%m"|find /i "PID" && (
echo PID:%%m running,kill the process [%%m] who use the port [%%n]
    taskkill /F /pid %%m
)
)
ANDREW_CO
执行构建 运行windown脚本 tomcat启动了 但是 最终窗口还是被关闭了
NewGuid
作者很细心,问题说的都特别详细,好文章,我就收藏啦
只身打马过草地
你这个jenkins和tomcat的服务实在同一台服务器上么 如果是不同的服务器war包怎么上传呢
老司机带你撸代码

引用来自“只身打马过草地”的评论

你这个jenkins和tomcat的服务实在同一台服务器上么 如果是不同的服务器war包怎么上传呢
不在同一服务器上,两台服务器,是通过SSH方式发布到Tomcat所在的服务器上的,Jenkins中安装Publish Over SSH插件,Tomcat所在的服务器需要安装PowerShell Server 2016这个软件,然后在Jenkins中配置SSH服务器,就可以实现远程发布,如果还是不清楚,可关注我的公众号进行交流。
×
老司机带你撸代码
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: