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: [email protected]

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

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

时间: 2024-08-26 03:54:57

Jenkins job的自动部署脚本的相关文章

【原创】jenkins+maven自动部署脚本

jenkins+maven自动部署脚本 2019-02-01 09:34:38 前提,所有主机都做了免密登录操作,相信下面的版本大家应该可以看得明白,我是两台服务器,但只放开了一个服务器的配置,原理很简单: 1.配置一些经常变化的变量 2.进入svn下载下来的源代码空间目录,然后编译 3.远程备份文件(很重要) 4.进入编译后的文件夹target,将文件拷贝至远程生产主机 5.远程重启服务,搞定! #!/bin/bash source /etc/profile #基础环境变量 SERVER_23

rsyslog客户端自动部署脚本,经测试使用正常

自动写的rsyslog客户端自动配置脚本,经测试正常使用 #!/bin/bash #Install & Config the rsyslog #Release 0.3 #date 2016.10.10 #set -x #此脚本为log自动部署脚本 #版本较早系统自带syslog,较新版本自带rsyslog #手动配置如下, #在/etc/rsyslog中追加以下配置,然后重启/etc/init.d/rsyslog restart #  user.* @172.16.16.20 #  authpr

自动部署脚本-bash

from here !/bin/bash Check if user is root if [ $(id -u) != "0" ]; then Echo_Red "Error: You must be root to run this script" exit 1 fi . common.sh . basic_soft.sh . config_soft.sh paths config current_path=pwd config_path=$current_pat

Glassfish Payara + jenkins自动部署脚本

配置文件内的列需要依次添加cat AutoDeployConf.conf #application domain port target contextroot app_name package_path passwordfiletest domain9 4808 test test test /test.war /test_adminpassword.txt 脚本内容,执行方式./auto_deploy_glassfish.sh applicationcat auto_deploy_glass

jenkins实现项目自动部署

背景 整体思路 实现方式 1 自动化部署脚本 2 远程执行 3 配置jenkins任务 背景 之前给公司搭建过一套gitlab+gerrit+jenkins的持续集成环境,由于操作起来有点繁琐,自己也没太搞清楚该怎么用,所以一直就只用了gitlab来做代码管理.最近要做一个项目自动部署的功能,使用过jenkins一定知道他的自动化功能.所以就从jenkins创建自动部署任务的方式来入手. 整体思路 jenkins可以配置触发器,当有新的提交时,触发执行相应的任务.由于jenkins和项目部署不在

Jenkins spring boot 自动部署方案

原文地址:http://www.cnblogs.com/skyblog/p/5632869.html 现在主流的自动部署方案大都是基于Docker的了,但传统的自动部署方案比较适合中小型公司,下面的方案就是比较传统的自动部署方案. 1.为什么需要自动部署 基于微服务的架构,自动部署显得非常重要.因为每一个服务都需要部署.如果是手动部署,那么有M个服务,那么至少需要部署M次,如果每个同样的服务部署N个实例,那么就需要部署M*N次.所以自动部署对于微服务架构几乎是必须的,这一点不同于传统应用. 2.

SOA自动部署脚本(发布、更新、回滚)

脚本功能 使用该脚本完成SOA工程的全量更新.增量更新.全量回滚等操作. 自动部署流程 3. 脚本代码 #!/usr/bin/python #coding=utf-8 import sys,os,re,time,commands,logging work_dir='/data/company/soa' package_dir='/data/package/soa' update_file_path='/data/update/' check_dir=os.path.exists(work_dir

Google Appengine 的自动部署脚本

你是否在appengine上注册了N个应用?每次代码更新都很痛苦?! 在我痛苦了很久后,总算找到一种可以自动部署方式,并写成了脚本,共大家分享 deploy.py #!/usr/bin/env python # -*- coding: utf-8 -*- # 将 {project_name} 替换成你的项目目录 # 将 {password} 替换成你的密码文件 # 将 {email} 替换成你的email import sys import os import urllib2 def deplo

做了一个简易的git 代码自动部署脚本

项目是THINKPHP写的 用了 oschina git 进行版本管理. 公网服务器是CentOS.每次用FTP上传很麻烦. 所以想到了在服务器上安装一个GIT进行 pull代码.因为我的远程服务器数据库和本地不一样,所以代码pull后还需要修改 几个config.php数据库配置文件. 所以想再git 代码更新后,要自动执行config.php文件的替换或者修改. 其中看到这里讨论http://www.v2ex.com/t/81173  git hook 然后看了下比较麻烦.也看不懂. 所以就