Jenkins任务:创建任务更新tomcat的war包-nbr_dev_refreshWAR
正文:
1、新建Jenkins任务

2、选择构建一个maven项目,输入任务名

3、配置任务
(1)源码管理
选择Subversion,Repository URL填写$SVN_Url_NBR_V2_0,Credentials填写登录svn的账号密码
Check-out Strategy选择Use 'svn update' as much as posible,with 'svn revert' before update

(2)构建触发器
勾选Build whenever a SNAPSHOT dependency is built

(3)构建环境
勾选Abort the build if it's stuck,Time-out strategy选择Absolute,Timeout minutes填写30

(4)Pre Steps
选择Execute Windows batch command
批处理命令填写
echo buid war包前需要先修改相关配置文件
SET CURRENT_JenkinsTask=nbr_dev_refreshWAR
call D:\BXERP\trunk\src\jenkins\Common\updateConfig.py
exit 0

调用updateConfig.py更新配置文件,可以查看“更新配置文件脚本updateConfig.py”的介绍。
(5)build
执行maven命令
Root POM填写pom.xml,Goals and options填写clean package -DskipTests

(6)Post Steps
选择Run regardless of build result
选择Execute Windows batch command
批处理命令填写
@echo off
echo 现在的BUILD_ID=%BUILD_ID%
call D:\BXERP\trunk\src\jenkins\nbr_dev_refreshWAR\nbr_dev_refreshWAR.py
SET BUILD_ID='DONTKILLTHIS'
echo 执行完脚本后,现在的BUILD_ID=%BUILD_ID%
exit 0

调用了nbr_dev_refreshWAR.py,主要完成的逻辑,关闭tomcat,删除tomcat下旧的war包,将通过maven构建出来的war包放到tomcat下,删除tomcat下旧的
nbr项目文件夹和Root文件夹,最后重启tomcat。(引用到的bxUtility.py可以查看“工具脚本bxUtility.py”文章)
代码如下
nbr_dev_refreshWAR.py
# coding=utf-8
import os
import shutil
# 引用自定义的模块
import sys
sys.path.append('D:/BXERP/trunk/src/jenkins/Common') #引用的自定义模块不与该python文件在同一目录时,需要指定路径
from bxUtility import printInfo
from bxUtility import closeTomcat
from bxUtility import startTomcat
# 需要从jenkins的环境变量读取的参数:nbr登录页网址、当前使用的TableCreate源代码文件夹目录(v1.0 or v1.1)
CURRENT_ReleaseNbrHomeUrl = os.getenv("CURRENT_ReleaseNbrHomeUrl")
CURRENT_SrcDirOfTableCreate = os.getenv("CURRENT_SrcDirOfTableCreate")
# 相关的操作文件和路径
FILE_NewWarPath = 'D:/Jenkins/workspace/nbr_dev_refreshWAR/target/nbr.war'
FILE_WarPath = 'D:/tomcat/webapps/nbr.war'
FILE_NbrPath = 'D:/tomcat/webapps/nbr'
FILE_RootPath = 'D:/tomcat/webapps/ROOT'
try:
# 关闭tomcat
closeTomcat(60) #参数为等待的时间(s),每10秒会检查一次,直到超过等待的时间
# 删除旧war包
print ('正在删除旧war包...');
if os.path.exists(FILE_WarPath):
os.remove(FILE_WarPath)
printInfo('删除旧war包成功。', 0)
else:
printInfo('找不到旧war包:' + FILE_WarPath + '。', 0)
# 更新Tomcat的war包
print ('正在更新Tomcat的war包...');
if os.path.exists(FILE_NewWarPath):
shutil.copy(FILE_NewWarPath, FILE_WarPath)
printInfo('更新Tomcat的war包成功。', 0)
else:
printInfo('找不到新构建的war包:' + FILE_NewWarPath + '。', 3)
# 删除旧nbr文件夹
print ('正在删除旧nbr文件夹...');
if os.path.exists(FILE_NbrPath):
shutil.rmtree(FILE_NbrPath)
printInfo('删除旧nbr文件夹成功。', 0)
else:
printInfo('找不到旧nbr文件夹:' + FILE_NbrPath + '。', 0)
# 删除旧ROOT文件夹
print ('正在删除旧nbr文件夹...');
if os.path.exists(FILE_RootPath):
shutil.rmtree(FILE_RootPath)
printInfo('删除旧ROOT文件夹成功。', 0)
else:
printInfo('找不到旧ROOT文件夹:' + FILE_RootPath + '。', 0)
# 重启tomcat
startTomcat(300, CURRENT_ReleaseNbrHomeUrl, CURRENT_SrcDirOfTableCreate)
except Exception as e:
printInfo('出现异常:' + str(e), 1)
else:
os._exit(0)
(7)保存,在主页面可以看到刚创建出来的任务
4、运行Jenkins任务
点击Build Now即可开始运行任务

5、查看运行日志
在左下方可以看到运行中的任务,点击”控制台输出”查看日志


浙公网安备 33010602011771号