码迷,mamicode.com
首页 > 其他好文 > 详细

Jenkins job的自动部署脚本

时间:2020-04-08 10:05:48      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:wal   绝对路径   strong   form   start   proc   author   timeout   jenkins   

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: rui.he@geekthings.com.cn

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")

 

Jenkins job的自动部署脚本

标签:wal   绝对路径   strong   form   start   proc   author   timeout   jenkins   

原文地址:https://www.cnblogs.com/herui1991/p/12657809.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!