扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
最近领导要求上海本地的项目需要使用进jenkins实现自动化部署,以便可以直接将项目移交给运维的同学,减轻开发的工作量。记录下这次爬坑的过程。
成都创新互联是一家专业提供澄海企业网站建设,专注与成都网站设计、成都网站建设、H5响应式网站、小程序制作等业务。10年已为澄海众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。一、前言
Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
上面是我从百科上down下来的,老实说没看懂,这是个什么玩意啊?其实以我现在的理解和应用,最多的便是部署了,其他功能待研究╮(╯_╰)╭撸主目前在上海一个不知名国企打工,我们现在项目的发布流程是:
1、本地或打包服务器利用maven打成war包
2、远程或者SSH连上项目服务器
3、停掉tomcat,删除旧包和缓存,将新打的包放进去
4、重启tomcat。完成看似步骤简单,其实占用了大量开发的的时间。
然后使用jenkins后:
1、点击立即构建,完成。什么?就点击个按钮就完成了,没错,就是个按钮。其实在你点击按钮后jenkins已经帮你把上述该走的流程后台跑了一遍了,本次就介绍下怎么让它后台跑。
二、安装构建
本次介绍基于windows,可安装在开发电脑或者windows server服务器
1、下载jenkins
jenkins提供多种安装方式
1.1jenkins.msi安装 就像我们平时安装软件一样,点点点。下载地址:https://jenkins.io/download/
1.2jenkins.war 包 既然是war包,不用说大家都知道怎么启动了,扔到tomcat就行了。下载地址:http://updates.jenkins-ci.org/download/war/
2、启动jenkins
我个人是比较推荐1.1的安装方式的,1.2我在使用的时候经常遇到内存溢出的问题,当然内存溢出是可以调整的,但是多出了多余的工作量不是嘛。
采用1.1的安装方式,安装完成后我们会在windows的服务里面看到jenkins服务的。如下图,启动关闭重启直接点服务就行了。
采用1.2的的方式下载war包的话,其实有两种启动方式。
第一种,放到tomcat容器,
第二种,cmd进入安装目录,java -jar jenkins.war
3、安装jenkins
安装方式1.1和1.2 的流程是一样的
jenkins默认8080端口,可以修改,方法百度。
进入http://localhost:8080/。红色字体路径有密码,将密码填上,然后下一步。
选择插件,建议选择官方建议插件,避免很多麻烦。
等待安装中ing......
安装好后看到下图,用户名密码登陆用的,全名是用来显示的。继续下一步。
因为我要部署的是maven项目,jenkins默认的插件中是没有maven的,首先需要安装下。
点击下图插件直接安装就行了,maven integration plugins
安装热部署插件Deploy to container Plugin
4、配置jenkins
我们需要配下maven的setting文件,jdk以及maven地址,setting文件一定要配,不要用它默认的,撸主因为这个没配,出问题纠结好久。
最后Apply然后Save就行了,记得别忘了应用保存,不然白配了。
接着我们来新建一个项目,先输入项目名,选择maven项目,OK
选择源码管理,因为我们是企业项目,不是开源,使用的SVN,选择Subversion配置SVN
URL是你SVN地址,Credentials是账户密码
然后到Pre Steps,这个东西是打包前需要什么操作,比如我们现在的项目需要拷贝log4j.xml文件等等,根据环境可以写windows或者Shell脚本
没有操作的话,就不用配了。
贴出我的脚本给大家参考,相关部分我用XXX替代
@echo off rem 设置变量 :: APP.XXX app.XXX代码的本地跟目录 set APP.XXX="D:\svn\svn.173.X.X.X\app.XXX\" ::home.omm的log4j.xml 变量START :: HOME_OMM_LOG4J_GOALS_PATH 存放home.omm的log4j.xml的路径 set HOME_OMM_LOG4J_GOALS_PATH="D:\svn\svn.173.X.X.X\app.XXX\src\home.omm\src\main\resources" ::HOME_OMM_LOG4J home.omm的log4j.xml测试环境的路径 set HOME_OMM_LOG4J="D:\svn\svn.173.X.X.X\app.XXX\config\home.omm\sh_test\resources" ::home.omm的log4j.xml 变量END ::home.weixin的变量START :: HOME_WEIXIN_LOG4J_GOALS_PATH 存放home.weixin的log4j.xml的路径 set HOME_WEIXIN_LOG4J_GOALS_PATH="D:\svn\svn.173.X.X.X\app.XXX\src\home.weixin\src\main\resources" ::HOME_WEIXIN_LOG4J home.weixin的log4j.xml测试环境的路径 set HOME_WEIXIN_LOG4J="D:\svn\svn.173.X.X.X\app.XXX\config\home.weixin\sh_test\resources" :: HOME_WEIXIN_CONFIG.JS_GOALS_PATH 存放home.weixin的config.js的路径 set HOME_WEIXIN_CONFIG.JS_GOALS_PATH="D:\svn\svn.173.X.X.X\app.XXX\src\home.weixin\src\main\webapp\module\js" ::HOME_WEIXIN_CONFIG.JS home.omm的log4j.xml测试环境的路径 set HOME_WEIXIN_CONFIG.JS="D:\svn\svn.173.X.X.X\app.XXX\config\home.weixin\sh_test\webapp\module\js" ::home.weixin的变量END ::service的变量START :: SERVICE_LOG4J_GOALS_PATH 存放service的log4j.xml的路径 set SERVICE_LOG4J_GOALS_PATH="D:\svn\svn.173.X.X.X\app.XXX\src\service\src\main\resources" ::SERVICE_LOG4J service的log4j.xml测试环境的路径 set SERVICE_LOG4J="D:\svn\svn.173.X.X.X\app.XXX\config\service\sh_test\resources" :: SERVICE_APPLICATION_RESOURCES_ALL_GOALS_PATH 存放application-resources-all.xml的路径 set SERVICE_APPLICATION_RESOURCES_ALL_GOALS_PATH="D:\svn\svn.173.X.X.X\app.XXX\src\service\src\main\resources\config\spring" :: SERVICE_APPLICATION_RESOURCES_ALL application-resources-all.xml测试环境的路径 set SERVICE_APPLICATION_RESOURCES_ALL="D:\svn\svn.173.X.X.X\app.XXX\config\service\sh_test\resources\config\spring" ::service的变量END ::service.refresh的变量START :: SERVICE_REFRESH_LOG4J_GOALS_PATH 存放service.refresh的log4j.xml的路径 set SERVICE_REFRESH_LOG4J_GOALS_PATH="D:\svn\svn.173.X.X.X\app.XXX\src\service.refresh\src\main\resources" ::SERVICE_REFRESH_LOG4J service的log4j.xml测试环境的路径 set SERVICE_REFRESH_LOG4J="D:\svn\svn.173.X.X.X\app.XXX\config\service.refresh\sh_test\resources" :: SERVICE_REFRESH_APPLICATION_RESOURCES_ALL_GOALS_PATH 存放application-resources-all.xml的路径 set SERVICE_REFRESH_APPLICATION_RESOURCES_ALL_GOALS_PATH="D:\svn\svn.173.X.X.X\app.XXX\src\service.refresh\src\main\resources\config\spring" :: SERVICE_REFRESH_APPLICATION_RESOURCES_ALL application-resources-all.xml测试环境的路径 set SERVICE_REFRESH_APPLICATION_RESOURCES_ALL="D:\svn\svn.173.X.X.X\app.XXX\config\service.refresh\sh_test\resources\config\spring" ::service.refresh的变量END ::判断home.omm的log4j.xml文件是否存在 if exist %HOME_OMM_LOG4J_GOALS_PATH%\log4j.xml (del %HOME_OMM_LOG4J_GOALS_PATH%\log4j.xml) cd %HOME_OMM_LOG4J_GOALS_PATH% copy %HOME_OMM_LOG4J%\log4j.xml log4j.xml ::判断home.weixin的log4j.xml文件是否存在 if exist %HOME_WEIXIN_LOG4J_GOALS_PATH%\log4j.xml (del %HOME_WEIXIN_LOG4J_GOALS_PATH%\log4j.xml) cd %HOME_WEIXIN_LOG4J_GOALS_PATH% copy %HOME_WEIXIN_LOG4J%\log4j.xml log4j.xml ::判断home.weixin的config.js文件是否存在 if exist %HOME_WEIXIN_CONFIG.JS_GOALS_PATH%\config.js (del %HOME_WEIXIN_CONFIG.JS_GOALS_PATH%\config.js) cd %HOME_WEIXIN_CONFIG.JS_GOALS_PATH% copy %HOME_WEIXIN_CONFIG.JS%\config.js config.js ::判断service的log4j.xml文件是否存在 if exist %SERVICE_LOG4J_GOALS_PATH%\log4j.xml (del %SERVICE_LOG4J_GOALS_PATH%\log4j.xml) cd %SERVICE_LOG4J_GOALS_PATH% copy %SERVICE_LOG4J%\log4j.xml log4j.xml ::判断service的application-resources-all.xml文件是否存在 if exist %SERVICE_APPLICATION_RESOURCES_ALL_GOALS_PATH%\application-resources-all.xml (del %SERVICE_APPLICATION_RESOURCES_ALL_GOALS_PATH%\application-resources-all.xml) cd %SERVICE_APPLICATION_RESOURCES_ALL_GOALS_PATH% copy %SERVICE_APPLICATION_RESOURCES_ALL%\application-resources-all.xml application-resources-all.xml ::判断service.refresh的log4j.xml文件是否存在 if exist %SERVICE_REFRESH_LOG4J_GOALS_PATH%\log4j.xml (del %SERVICE_REFRESH_LOG4J_GOALS_PATH%\log4j.xml) cd %SERVICE_REFRESH_LOG4J_GOALS_PATH% copy %SERVICE_REFRESH_LOG4J%\log4j.xml log4j.xml ::判断service.refresh的application-resources-all.xml文件是否存在 if exist %SERVICE_REFRESH_APPLICATION_RESOURCES_ALL_GOALS_PATH%\application-resources-all.xml (del %SERVICE_REFRESH_APPLICATION_RESOURCES_ALL_GOALS_PATH%\application-resources-all.xml) cd %SERVICE_REFRESH_APPLICATION_RESOURCES_ALL_GOALS_PATH% copy %SERVICE_REFRESH_APPLICATION_RESOURCES_ALL%\application-resources-all.xml application-resources-all.xml exit
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流