内容简介:Jenkins+SVN+Maven自动化部署环境搭建
前言
因今年公司新产品线较多,为了降低耦合,达到业务分离、重用,提高内部开发效率的目的,采用了基于服务组件、前后端分离的架构体系。与之前传统单应用架构相比,系统部署、配置更加复杂,为了能够频繁地将软件的最新版本,及时、持续地交付给测试团队及质量控制团队,以供评审,所以引入持续集成工具Jenkins,从而实现公司新产品持续集成,自动化部署。
环境准备
- 操作系统:Windows10
- Java环境:下载 jdk-1.8.0-131-X64.zip,配置 Java 环境变量(参考:http://jingyan.baidu.com/article/02027811629b941bcc9ce521.html)
- Maven环境:下载apache-maven-3.5.2-bin.zip,配置Maven环境变量(参考:http://wiki.jikexueyuan.com/project/maven/environment-setup.html)
- Tomcat环境:下载apache-tomcat-8.5.20-windows-x64.zip,配置Tomcat环境变量(参考:http://jingyan.baidu.com/article/8065f87fcc0f182330249841.html)
- Jenkins环境:下载Jenkins2.73.2 for Windows
安装Jenkins
-
运行下载好的Jenkins安装包jenkins.msi,选择安装路径,点击”安装“,等待安装完成;
-
安装完成以后,会自动启动浏览器,跳转到Jenkins登录页面。第一次启动Jenkins,出于安全考虑,Jenkins会生产一个随机口令文件,表单中会给出管理员口令文件存放的位置,通过Windows+R,调出运行窗口,将存放口令的文件路径粘贴到输入框,点击回车,快速打开文件,将文件中的口令输入到表单中,点“Continue”继续;
-
安装Jenkins官方建议的默认插件;
-
创建第一个管理员用户,创建完成以后,就可以用这个用户登录到Jenkins系统中。
安装插件
下面介绍实际部署中所用到的几个插件,安装方法:系统管理->管理插件。
- 安装Deploy to container Plugin(自动化部署插件)
- 安装Maven Integration Plugin(Maven集成插件)
- 安装Publish Over SSH Plugin(SSH远程发布插件)
注意:因插件安装以后,需要重启Jenkins才能够使用。所以在安装插件时,可以勾选安装完成后重启Jenkins。如果不小心忘记勾选,也没有关系,可以在浏览器网址端口后面输入/restart来重启Jenkins,其它的命令,可参考系统管理->Jenkins CLI。
系统配置
插件安装完成以后,我们需要对系统进行配置。
- 首先进行全局配置,系统管理->系统设置:
Jenkins Location配置
Jenkins URL项保持默认即可,填写系统管理员邮件地址。(注意:这个如果不填写的是发送不了邮件的,测试邮件发送时会报:“553 Mail from must equal authorized user”错误。)
邮件通知配置
填写“SMTP服务器”、“用户默认邮件后缀”,然后点“高级”,勾选“使用SMTP认证”,填写邮箱用户名、密码和SMTP端口,接着勾选“通过发送测试邮件测试配置”,填写接收邮件的邮箱,点击“测试”,出现“Email was successfully sent”表明邮件通知配置成功。
SSH remote hosts配置
SSH远程主机配置,主要用来通过SSH方式远程发布,在后面的章节会详细介绍。
Publish over SSH配置
主要是用来通过SSH方式远程发布,在后面的章节会详细介绍。
- 然后,进入系统设置->Global Tool Configuration:
SonarQube servers配置
Maven配置
配置Maven主要是配置Maven的settings.xml文件,Jenkins在构建Maven项目时需要依靠该配置文件来执行Maven,其配置如下:
JDK配置
SonarQube Scanner配置
新建项目
新建一个Maven项目
项目配置
###源码管理
构建触发器
Jenkins提供了6中构建触发器,分别是:
- build whenever a snapshot dependency is built ,当job依赖的快照版本被build时,执行本job;
- 触发远程构建 (例如,使用脚本);
- build after other projects are built 当本job依赖的job被build时,执行本job;
- build periodically 隔一段时间build一次,不管版本库代码是否发生变化,通常不会采用此种方式;
- GitHub hook trigger for GITScm polling 通过Github钩子触发;
- poll scm 隔一段时间比较一次源代码,如果发生变更,那么久build。否则,不进行build,通常采用这种方式。
构建(Build)
调用Maven “clean install”命令。
增加一个构建后步骤(自动部署)
因在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
构建设置(邮件通知)
构建测试
点击“立即”构建,maven 打包成功,执行脚本无误以后,整个自动化部署就成功了。
结语
按照以上步骤,可以成功完成自动化部署环境搭建。网上很多教程,在“构建后步骤”这一步直接贴出Execute shell,且未说明是在什么操作系统环境下,注意直接拿来用在Windows环境下面是不行的。Jenkins软件帮助功能做的非常强大,在每一项配置后面,都会有一个帮助菜单,所以当你不确定该项如何填写时,这个菜单是最好的参考工具。后面我将会继续介绍通过SSH远程发布以及Jenkins与SonarQube(开源代码质量管理系统)集成,欢迎一起交流学习。
以上所述就是小编给大家介绍的《Jenkins+SVN+Maven自动化部署环境搭建》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)
- 三周学会小程序(三):服务端搭建和免费部署
- 记录一次自己使用jenkins搭建自动部署
- next + koa + mongodb 从搭建到部署(一)
- Jenkins + Github + Nginx搭建前端项目自动部署
- 搭建 K8S 集群之 node 节点部署
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Automate This
Christopher Steiner / Portfolio / 2013-8-9 / USD 25.95
"The rousing story of the last gasp of human agency and how today's best and brightest minds are endeavoring to put an end to it." It used to be that to diagnose an illness, interpret legal docume......一起来看看 《Automate This》 这本书的介绍吧!