zoukankan      html  css  js  c++  java
  • Jenkins job的自动部署脚本

    Jenkins job的自动部署脚本

    需求:

    1.从Jenkins的workspace中,将编译好的Java代码部署到D:zzinfoUserCenterCoordinator中

    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:zzinfoUserCenterCoordinatorlib"
        copy_file(lib_s_dir, lib_d_dir)
    
        # copy bin
        bin_s_dir = os.getenv("WORKSPACE") + r'	argetclasses'
        bin_d_dir = r"d:zzinfoUserCenterCoordinatorin"
        copy_file(bin_s_dir, bin_d_dir)
    
        # 启动5558 | 5559 | APNs
        os.popen(r"start /d d:zzinfocenter64-UserList_V3 5559_CENTER64_UserList.exe")
        os.popen(r"start /d d:zzinfocenter64_V3 5558_CENTER64.exe")
        os.popen(r"start /d d:zzinfoAPNs APNs.exe")
  • 相关阅读:
    两数之和
    swift 结构体
    打家劫舍II
    Swift的访问控制讲解
    swift版 二分查找 (折半查找)
    RAC(ReactiveCocoa)介绍(一)
    变位词
    双向循环链表
    单链表
    顺序链表(C++)
  • 原文地址:https://www.cnblogs.com/herui1991/p/12657809.html
Copyright © 2011-2022 走看看