基于Maven+SVN+tomcat+jenkins实现自动化部署
随着迭代的项目越来越多,研发到测试,测试到上线,频繁的版本发布耗费了大量的时间,在加上公司的现状是实施运维人员不能把部署发布工作跳起来,采用敏捷开发模式的项目随着版本频繁迭代光版本到测试、生产环境就占用了研发人员很多时间,所以基于Maven+SVN+tomcat+jenkins实现自动化部署势在必行。
-
基于Maven+SVN+tomcat+jenkins实现自动化部署架构的运行机制
-
jenkins 安装部署
-
安装包下载
-
(1)官网下载安装war包 https://jenkins.io/download/
-
(2)官网用户文档 https://jenkins.io/doc/
-
1、安装包下载
(1)官网下载安装war包 https://jenkins.io/download/
(2)官网用户文档 https://jenkins.io/doc/ -
3、环境准备
-
jdk1.8版本、
-
tomcat8、
-
maven3.3及以上
4、部署jenkins
下载jenkins.war 后, 在tomcat中部署启动即可
(1)如果设置JENKINS_HOME则安装到对应目录,否则,对于windows系统,会默认装在C盘,部署到tomcat进行配置启动(根据配置向导进行就可以);(2)linux环境下启动jenkins后会自动选择一个目录
如图所示:在linux下启动后:
首次访问 需要将/root/.jenkins/secrets/initialAdminPassword 目录下的密码复制出来解锁系统。
cat /root/.jenkins/secrets/initialAdminPassword
5、根据向导配置jenkins、安装推荐插件
5、安装插件(做自动化部署必选插件)
-
Maven Project Plugin
-
Subversion Plug-in
-
JIRA plugin
-
Maven Integration plugin
-
Deploy to container Plugin
-
SSH
6、站点镜像报错问题
如果网络环境不允许访问jenkins默认的更新站点镜像,可以修改为国内可用镜像地址。更新站点报错 ,需在插件设置里填写最新的插件更新站点 http://updates.jenkins-ci.org/update-center.json
清华大学开源软件镜像站jenkins镜像地址列表
http://mirrors.jenkins-ci.org/status.html
7、全局工具配置(重要)
配置自动化部署任务
1、创建maven任务
2、配置svn 用户名、密码
3、构建后操作
参数详解:
第一项(WAR/EAR files):是war包的相对路径(相对于工作区路径,即在工作区中war包的相对路径.)如我的maven执行完成之后会在工作区的target目录下生成项目.war,所以这里我的路径就写target\项目.war.
第二项:(content path):tomcat的发布路径,即使用localhost/(content path设置的名字)来访问项目.
最后一项是deploy on failure是发生错误的时候是否发布到tomcat.
4、tomcat配置文件添加
(1)在tomcat-users.xml中添加角色、用户、密码等信息
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
(2)修改tomcat的访问权限(重要)
在 webapps\manager\META-INF下的contex.xml中配置访问tomcat的权限:
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>
5、构建触发器
Build periodically:周期进行项目构建(它不care源码是否发生变化),我的配置如下:
0 2 * * * (每天2:00 必须build一次源码)
Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。
1.首先格式为:* * * * *(五个星);
2.第一个*表示分钟,取值0~59
第二个*表示小时,取值0~23
第三个*表示一个月的第几天,取值1~31
第四个*表示第几月,取值1~12
第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日