Jenkins job的自动部署脚本
Jenkins job的自动部署脚本
需求:
1.从Jenkins的workspace中,将编译好的Java代码部署到D:\zzinfo\UserCenterCoordinator中
2.部署过程中,需要停止相关联的其他进程,如5558_CENTER64.exe | 5559_CENTER64_UserList.exe | APNs.exe
代码如下:
#!/usr/local/env python3
# -*- coding:utf-8 -*-
# author by Michael Ho
# contact:
import psutil, shutil, os
# 杀死进程
def kill_process_name(process_name):
pid_list = psutil.pids()
for pid in pid_list:
try:
each_pro = psutil.Process(pid)
if process_name.lower() in each_pro.name().lower():
# logger.info(‘find and kill {}‘.format(process_name))
each_pro.terminate()
each_pro.wait(timeout=3)
except psutil.NoSuchProcess as pid:
pass
# copy文件
def copy_file(s_dir, d_dir):
if os.path.exists(d_dir):
shutil.rmtree(d_dir) # 删除zzinfo工作目录
os.makedirs(d_dir)
for root, dirs, files in os.walk(s_dir):
for d in dirs:
s_dir_name = os.path.join(root, d) # 列出workspace里面的子目录
d_dir_name = s_dir_name.replace(s_dir, d_dir)
if not os.path.exists(d_dir_name):
os.makedirs(d_dir_name) # 创建zzinfo里面的子目录
for f in files:
s_file_name = os.path.join(root, f) # 列出workspace里面的所有文件的绝对路径
d_file_name = s_file_name.replace(s_dir, d_dir) # 列出目标文件的绝对路径
shutil.copyfile(s_file_name, d_file_name)
# main函数入口
if __name__ == ‘__main__‘:
# set BUILD_ID is dontKillMe, or failed to start 5558, 5559 and APNs
os.environ[‘BUILD_ID‘] = "dontKillMe"
# kill 5558 | 5559 | APNs Process
kill_process_name("5558_CENTER64.exe")
kill_process_name("5559_CENTER64_UserList.exe")
kill_process_name("APNs.exe")
# copy lib
lib_s_dir = os.getenv("WORKSPACE") + r‘\lib‘
lib_d_dir = r"d:\zzinfo\UserCenterCoordinator\lib"
copy_file(lib_s_dir, lib_d_dir)
# copy bin
bin_s_dir = os.getenv("WORKSPACE") + r‘\target\classes‘
bin_d_dir = r"d:\zzinfo\UserCenterCoordinator\bin"
copy_file(bin_s_dir, bin_d_dir)
# 启动5558 | 5559 | APNs
os.popen(r"start /d d:\zzinfo\center64-UserList_V3 5559_CENTER64_UserList.exe")
os.popen(r"start /d d:\zzinfo\center64_V3 5558_CENTER64.exe")
os.popen(r"start /d d:\zzinfo\APNs APNs.exe") 相关推荐
达观数据 2020-11-11
汪康 2020-10-30
ppppfly 2020-10-24
synshitou 2020-10-21
programmeryu 2020-09-24
Topbeyond 2020-08-21
lrcoop 2020-08-18
young依然 2020-08-17
oden 2020-08-16
lrcoop 2020-08-15
yserver 2020-08-15
王永迪 2020-08-15
pursuemylife 2020-08-14
pandaphinex 2020-08-09
leonranri 2020-07-26
CloasGao 2020-07-21
zccheu 2020-07-18