Windows下Jenkins自动拉取编译SVN项目并发布Tomcat和Jboss
本文主要记录一些重要的配置,忽略Jenkins的安装。配置主要分为三个重要部分:
1、插件配置
主要涉及3个插件的安装。
Deploy to container Plugin:This plugin takes a war/ear file and deploys that to a running remote application server at the end of a build。主要是用来发布打包后的war文件到容器。running remote application server意味着该服务器需要是运行状态的。该插件支持的版本如下:
Tomcat 4.x/5.x/6.x/7.x
JBoss 3.x/4.x
Glassfish 2.x/3.x
注意:关于选用Jboss作为服务器来发布项目,如果选用高于4.X的版本,可能回出现Failed to create deployer ...(container [id=[jboss7.x]],deployer type[romate])的问题,可能是版本问题,但是不知为何该插件的container列表里面有jboss7的选项。
Maven Integration plugin:主要支持Maven,Maven项目需要
Subversion Plug-in:支持SVN,从SVN上拉取代码
Jboss插件的安装位置如下图,系统管理--》插件管理:
2、2、全局工具配置
配置位置:系统管理--》全局工具配置
主要配置了2个工具:
1、JAVA
2、Maven
配置很简单,不勾选自动安装,选自你本地的工具路径即可,注:环境变量要配置
配置如下图所示:
3、视图配置
视图的配置有很多,其中重要的部分如下:
1、General
丢弃旧的构建:一种构建规则
2、源码管理
Repository URL:SVN的项目地址 (必填)
Credentials:SVN的用户名密码 (必填)
Repository depth: Jenkins在执行checkout、update代码时,所取出的代码的范围。默认我们选择infinity就可以
Quiet check-out:Use 'svn update' whenever possible, making the build faster. But this causes the artifacts from the previous build to remain when a new build starts.
3、构建触发器
Build whenever a SNAPSHOT dependency is built :依赖于快照构建,当项目修改后构建
GitHub hook trigger for GITScm polling:通过Github钩子触发
其他工程构建后触发:当本job依赖的job,被build时,执行本job
定时构建:定时构建项目
轮询 SCM:轮询构建项目 Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有
4、Build and Post Steps
Root POM:编译的POM根文件 (Maven项目必须)
Goals and options:打包的一些参数 (看实际情况)
Run only if build succeeds:编译成功后执行脚本 (一般勾选这个)
Run only if build succeeds or is unstable:只有在构建成功或不稳定时才执行脚本
Run regardless of build result:不管构建结果如何运行脚本
5、构建后操作
WAR/EAR files:构建后war包存放在Jenkins的相对路径(必填)
Context path:项目发布后的虚拟路径,此路径会发布到容器中(必填)
Containers:发布的容器,tomcat就选tomcat,jboss就选jboss,两者的配置没什么大的区别
Credentials是容器访问的用户名和密码(没有设置就会用默认用户密码登陆)
URL是访问容器的根路径(必填)
最后,可以在视图的菜单栏可以点击立即构建,并查看构建的log日志。
因为Deploy to container Plugin支持的服务器的版本受限,在使用高版本服务器的时候,该插件并不能正常支持发布。
因此,在Jnekins生成wa'r包之后,我们可以执行批命令来自动发布。
windows下发布bat命令如下(其实就是把wa'r包从jenkins拷贝过来):
net stop JBossWebServer
del "E:\work\soft\worksoft\jboss\jboss-eap-7.1\standalone\deployments\riw.war"
echo "执行命令 del E:\work\soft\worksoft\jboss\jboss-eap-7.1\standalone\deployments\riw.war"
rd /s/q "E:\work\soft\worksoft\jboss\jboss-eap-7.1\standalone\deployments\riw"
echo "执行命令 rd /s/q E:\work\soft\worksoft\jboss\jboss-eap-7.1\standalone\deployments\riw"
copy /y "C:\Users\hejun\.jenkins\workspace\RIW_JBOSS2\target\riw.war" "E:\work\soft\worksoft\jboss\jboss-eap- 7.1\standalone\deployments\"
net start JBossWebServer
这样就可以了。