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、查看运行日志

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

posted @ 2022-08-29 19:32  Boxin-kim  阅读(208)  评论(0)    收藏  举报
Web Analytics
Guang Zhou Boxin