功能:使用fabric自动化发版
-
#-*-coding:utf8-*-
-
from fabric.api import *
-
import subprocess
-
import os
-
import sys
-
import glob
-
import shutil
-
-
env.roledefs = {
-
'cz-oms-core':['czoms@10.2.88.47','czoms@10.2.88.48'],
-
'cz-oms-core-new':['czoms@10.2.88.37','czoms@10.2.88.46'],
-
'cz-oms-core-new1':['czoms@10.2.88.40','czoms@10.2.88.41'],
-
'cz':['appuser@10.2.88.30']
-
}
-
-
-
-
env.passwords = {
-
'czoms@10.2.88.47:22':'fdfdfsdf',
-
'czoms@10.2.88.48:22':'fdfdfsdf',
-
'czoms@10.2.88.37:22':'fdfdfsdf',
-
'czoms@10.2.88.46:22':'fdfdfsdf',
-
'czoms@10.2.88.40:22':'fdfdfsdf',
-
'czoms@10.2.88.41:22':'fdfdfsdf',
-
'appuser@10.2.88.30:22':'appuser@0630',
-
}
-
-
-
#通用函数
-
def unzip():
-
with lcd('patch'):
-
local('winrar x *.zip')
-
-
#Update SVN
-
def UpdateSVN(path):
-
p = subprocess.Popen(['svn','update',path],shell=True,stdout=subprocess.PIPE)
-
print p.stdout.readlines()
-
-
-
-
#根据filelist生成发版目录
-
def faban_dir():
-
count = 0
-
with open('filelist.txt','r') as f:
-
for line in f:
-
if line.startswith('bj-oms-api'):
-
#filelist文件路径预处理
-
classpath_filename = line.replace('bj-oms-api/src/main/java/','../online_svn/bj-oms/bj-oms-api/target/classes/')
-
classpath_filename = classpath_filename.replace('.java','.class')
-
classpath_filename = classpath_filename.replace('\n','') #去掉换行符
-
#构造patch目录结构
-
patchpath_filename = line.replace('bj-oms-api/src/main/java/','')
-
patchpath_filename = patchpath_filename.replace('.java','.class')
-
patchpath_filename = patchpath_filename.replace('\n','')
-
patchpath_filename = 'patch/' + 'bj-oms-api/' + patchpath_filename
-
patchpath = os.path.dirname(patchpath_filename)
-
#如果patch目录不存在,就建立目录
-
try:
-
os.listdir(patchpath)
-
except WindowsError:
-
os.makedirs(patchpath) #makedirs可以在windows 的patch目录下递归建立文件夹
-
#拷贝父类到patch目录下
-
parentclass_path_filename = classpath_filename
-
patchpath_filename = patchpath_filename
-
print "拷贝svn class文件到patch目录: %s ---> %s " % (parentclass_path_filename,patchpath_filename)
-
shutil.copy(parentclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功***************" % count
-
#用glob寻找子类
-
path_filename = os.path.split(classpath_filename) #split:返回一个二元组,包含文件的路径与文件名
-
filename_splitext = os.path.splitext(path_filename[1]) #去掉文件扩展名
-
subclass_path_filenames = glob.glob('%s/%s$*' % (path_filename[0],filename_splitext[0]))
-
#把子类拷贝到patch目录下
-
for subclass_path_filename in subclass_path_filenames:
-
subclass_path_filename = subclass_path_filename.replace('\\',r'/')
-
patchpath_filename = subclass_path_filename.replace('../online_svn/bj-oms/bj-oms-api/target/classes/','patch/bj-oms-api/')
-
print "拷贝svn subclass文件到patch目录: %s ---> %s " % (subclass_path_filename,patchpath_filename)
-
shutil.copy(subclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功,注意该文件是子类哦^_^ *****************************************" % count
-
-
elif line.startswith('bj-oms-domain'):
-
#filelist文件路径预处理
-
classpath_filename = line.replace('bj-oms-domain/src/main/java/','../online_svn/bj-oms/bj-oms-domain/target/classes/')
-
classpath_filename = classpath_filename.replace('.java','.class')
-
classpath_filename = classpath_filename.replace('\n','') #去掉换行符
-
#构造patch目录结构
-
patchpath_filename = line.replace('bj-oms-domain/src/main/java/','')
-
patchpath_filename = patchpath_filename.replace('.java','.class')
-
patchpath_filename = patchpath_filename.replace('\n','')
-
patchpath_filename = 'patch/' + 'bj-oms-domain/' + patchpath_filename
-
patchpath = os.path.dirname(patchpath_filename)
-
#如果patch目录不存在,就建立目录
-
try:
-
os.listdir(patchpath)
-
except WindowsError:
-
os.makedirs(patchpath) #makedirs可以在windows 的patch目录下递归建立文件夹
-
#拷贝父类到patch目录下
-
parentclass_path_filename = classpath_filename
-
patchpath_filename = patchpath_filename
-
print "拷贝svn class文件到patch目录: %s ---> %s " % (parentclass_path_filename,patchpath_filename)
-
shutil.copy(parentclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功***************" % count
-
#用glob寻找子类
-
path_filename = os.path.split(classpath_filename) #split:返回一个二元组,包含文件的路径与文件名
-
filename_splitext = os.path.splitext(path_filename[1]) #去掉文件扩展名
-
subclass_path_filenames = glob.glob('%s/%s$*' % (path_filename[0],filename_splitext[0]))
-
#把子类拷贝到patch目录下
-
for subclass_path_filename in subclass_path_filenames:
-
subclass_path_filename = subclass_path_filename.replace('\\',r'/')
-
patchpath_filename = subclass_path_filename.replace('../online_svn/bj-oms/bj-oms-domain/target/classes/','patch/bj-oms-domain/')
-
print "拷贝svn subclass文件到patch目录: %s ---> %s " % (subclass_path_filename,patchpath_filename)
-
shutil.copy(subclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功,注意该文件是子类哦^_^ *****************************************" % count
-
-
elif line.startswith('bj-oms-core-new1'): #位置1,不可调换,因为bj-oms-core包含bj-oms-core-new1
-
#filelist文件路径预处理
-
classpath_filename = line.replace('bj-oms-core-new1/src/main/java/','../online_svn/bj-oms/bj-oms-core-new1/target/classes/')
-
classpath_filename = classpath_filename.replace('.java','.class')
-
classpath_filename = classpath_filename.replace('\n','') #去掉换行符
-
#构造patch目录结构
-
patchpath_filename = line.replace('bj-oms-core-new1/src/main/java/','')
-
patchpath_filename = patchpath_filename.replace('.java','.class')
-
patchpath_filename = patchpath_filename.replace('\n','')
-
patchpath_filename = 'patch/' + 'bj-oms-core-new1/' + patchpath_filename
-
patchpath = os.path.dirname(patchpath_filename)
-
#如果patch目录不存在,就建立目录
-
try:
-
os.listdir(patchpath)
-
except WindowsError:
-
os.makedirs(patchpath) #makedirs可以在windows 的patch目录下递归建立文件夹
-
#拷贝父类到patch目录下
-
parentclass_path_filename = classpath_filename
-
patchpath_filename = patchpath_filename
-
print "拷贝svn class文件到patch目录: %s ---> %s " % (parentclass_path_filename,patchpath_filename)
-
shutil.copy(parentclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功***************" % count
-
#用glob寻找子类
-
path_filename = os.path.split(classpath_filename) #split:返回一个二元组,包含文件的路径与文件名
-
filename_splitext = os.path.splitext(path_filename[1]) #去掉文件扩展名
-
subclass_path_filenames = glob.glob('%s/%s$*' % (path_filename[0],filename_splitext[0]))
-
#把子类拷贝到patch目录下
-
for subclass_path_filename in subclass_path_filenames:
-
subclass_path_filename = subclass_path_filename.replace('\\',r'/')
-
patchpath_filename = subclass_path_filename.replace('../online_svn/bj-oms/bj-oms-core-new1/target/classes/','patch/bj-oms-core-new1/')
-
print "拷贝svn subclass文件到patch目录: %s ---> %s " % (subclass_path_filename,patchpath_filename)
-
shutil.copy(subclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功,注意该文件是子类哦^_^ *****************************************" % count
-
-
elif line.startswith('bj-oms-core'): #位置2,不可调换,因为bj-oms-core包含bj-oms-core-new1
-
#filelist文件路径预处理
-
classpath_filename = line.replace('bj-oms-core/src/main/java/','../online_svn/bj-oms/bj-oms-core/target/classes/')
-
classpath_filename = classpath_filename.replace('.java','.class')
-
classpath_filename = classpath_filename.replace('\n','') #去掉换行符
-
#构造patch目录结构
-
patchpath_filename = line.replace('bj-oms-core/src/main/java/','')
-
patchpath_filename = patchpath_filename.replace('.java','.class')
-
patchpath_filename = patchpath_filename.replace('\n','')
-
patchpath_filename = 'patch/' + 'bj-oms-core/' + patchpath_filename
-
patchpath = os.path.dirname(patchpath_filename)
-
#如果patch目录不存在,就建立目录
-
try:
-
os.listdir(patchpath)
-
except WindowsError:
-
os.makedirs(patchpath) #makedirs可以在windows 的patch目录下递归建立文件夹
-
#拷贝父类到patch目录下
-
parentclass_path_filename = classpath_filename
-
patchpath_filename = patchpath_filename
-
print "拷贝svn class文件到patch目录: %s ---> %s " % (parentclass_path_filename,patchpath_filename)
-
shutil.copy(parentclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功***************" % count
-
#用glob寻找子类
-
path_filename = os.path.split(classpath_filename) #split:返回一个二元组,包含文件的路径与文件名
-
filename_splitext = os.path.splitext(path_filename[1]) #去掉文件扩展名
-
subclass_path_filenames = glob.glob('%s/%s$*' % (path_filename[0],filename_splitext[0]))
-
#把子类拷贝到patch目录下
-
for subclass_path_filename in subclass_path_filenames:
-
subclass_path_filename = subclass_path_filename.replace('\\',r'/')
-
patchpath_filename = subclass_path_filename.replace('../online_svn/bj-oms/bj-oms-core/target/classes/','patch/bj-oms-core/')
-
print "拷贝svn subclass文件到patch目录: %s ---> %s " % (subclass_path_filename,patchpath_filename)
-
shutil.copy(subclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功,注意该文件是子类哦^_^ *****************************************" % count
-
-
elif line.startswith('bj-oms-rest'):
-
#filelist文件路径预处理
-
classpath_filename = line.replace('bj-oms-rest/src/main/java/','../online_svn/bj-oms/bj-oms-rest/target/classes/')
-
classpath_filename = classpath_filename.replace('.java','.class')
-
classpath_filename = classpath_filename.replace('\n','') #去掉换行符
-
#构造patch目录结构
-
patchpath_filename = line.replace('bj-oms-rest/src/main/java/','')
-
patchpath_filename = patchpath_filename.replace('.java','.class')
-
patchpath_filename = patchpath_filename.replace('\n','')
-
patchpath_filename = 'patch/' + 'bj-oms-rest/' + patchpath_filename
-
patchpath = os.path.dirname(patchpath_filename)
-
#如果patch目录不存在,就建立目录
-
try:
-
os.listdir(patchpath)
-
except WindowsError:
-
os.makedirs(patchpath) #makedirs可以在windows 的patch目录下递归建立文件夹
-
#拷贝父类到patch目录下
-
parentclass_path_filename = classpath_filename
-
patchpath_filename = patchpath_filename
-
print "拷贝svn class文件到patch目录: %s ---> %s " % (parentclass_path_filename,patchpath_filename)
-
shutil.copy(parentclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功***************" % count
-
#用glob寻找子类
-
path_filename = os.path.split(classpath_filename) #split:返回一个二元组,包含文件的路径与文件名
-
filename_splitext = os.path.splitext(path_filename[1]) #去掉文件扩展名
-
subclass_path_filenames = glob.glob('%s/%s$*' % (path_filename[0],filename_splitext[0]))
-
#把子类拷贝到patch目录下
-
for subclass_path_filename in subclass_path_filenames:
-
subclass_path_filename = subclass_path_filename.replace('\\',r'/')
-
patchpath_filename = subclass_path_filename.replace('../online_svn/bj-oms/bj-oms-rest/target/classes/','patch/bj-oms-rest/')
-
print "拷贝svn subclass文件到patch目录: %s ---> %s " % (subclass_path_filename,patchpath_filename)
-
shutil.copy(subclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功,注意该文件是子类哦^_^ *****************************************" % count
-
-
elif line.startswith('bj-oms-jobs'):
-
#filelist文件路径预处理
-
classpath_filename = line.replace('bj-oms-jobs/src/main/java/','../online_svn/bj-oms/bj-oms-jobs/target/classes/')
-
classpath_filename = classpath_filename.replace('.java','.class')
-
classpath_filename = classpath_filename.replace('\n','') #去掉换行符
-
#构造patch目录结构
-
patchpath_filename = line.replace('bj-oms-jobs/src/main/java/','')
-
patchpath_filename = patchpath_filename.replace('.java','.class')
-
patchpath_filename = patchpath_filename.replace('\n','')
-
patchpath_filename = 'patch/' + 'bj-oms-jobs/' + patchpath_filename
-
patchpath = os.path.dirname(patchpath_filename)
-
#如果patch目录不存在,就建立目录
-
try:
-
os.listdir(patchpath)
-
except WindowsError:
-
os.makedirs(patchpath) #makedirs可以在windows 的patch目录下递归建立文件夹
-
#拷贝父类到patch目录下
-
parentclass_path_filename = classpath_filename
-
patchpath_filename = patchpath_filename
-
print "拷贝svn class文件到patch目录: %s ---> %s " % (parentclass_path_filename,patchpath_filename)
-
shutil.copy(parentclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功***************" % count
-
#用glob寻找子类
-
path_filename = os.path.split(classpath_filename) #split:返回一个二元组,包含文件的路径与文件名
-
filename_splitext = os.path.splitext(path_filename[1]) #去掉文件扩展名
-
subclass_path_filenames = glob.glob('%s/%s$*' % (path_filename[0],filename_splitext[0]))
-
#把子类拷贝到patch目录下
-
for subclass_path_filename in subclass_path_filenames:
-
subclass_path_filename = subclass_path_filename.replace('\\',r'/')
-
patchpath_filename = subclass_path_filename.replace('../online_svn/bj-oms/bj-oms-jobs/target/classes/','patch/bj-oms-jobs/')
-
print "拷贝svn subclass文件到patch目录: %s ---> %s " % (subclass_path_filename,patchpath_filename)
-
shutil.copy(subclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功,注意该文件是子类哦^_^ *****************************************" % count
-
-
elif line.startswith('bj-tran'):
-
#filelist文件路径预处理
-
classpath_filename = line.replace('bj-tran/src/main/java/','../online_svn/bj-tran/target/classes/')
-
classpath_filename = classpath_filename.replace('.java','.class')
-
classpath_filename = classpath_filename.replace('\n','') #去掉换行符
-
#构造patch目录结构
-
patchpath_filename = line.replace('bj-tran/src/main/java/','')
-
patchpath_filename = patchpath_filename.replace('.java','.class')
-
patchpath_filename = patchpath_filename.replace('\n','')
-
patchpath_filename = 'patch/' + 'bj-tran/' + patchpath_filename
-
patchpath = os.path.dirname(patchpath_filename)
-
#如果patch目录不存在,就建立目录
-
try:
-
os.listdir(patchpath)
-
except WindowsError:
-
os.makedirs(patchpath) #makedirs可以在windows 的patch目录下递归建立文件夹
-
#拷贝父类到patch目录下
-
parentclass_path_filename = classpath_filename
-
patchpath_filename = patchpath_filename
-
print "拷贝svn class文件到patch目录: %s ---> %s " % (parentclass_path_filename,patchpath_filename)
-
shutil.copy(parentclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功***************" % count
-
#用glob寻找子类
-
path_filename = os.path.split(classpath_filename) #split:返回一个二元组,包含文件的路径与文件名
-
filename_splitext = os.path.splitext(path_filename[1]) #去掉文件扩展名
-
subclass_path_filenames = glob.glob('%s/%s$*' % (path_filename[0],filename_splitext[0]))
-
#把子类拷贝到patch目录下
-
for subclass_path_filename in subclass_path_filenames:
-
subclass_path_filename = subclass_path_filename.replace('\\',r'/')
-
patchpath_filename = subclass_path_filename.replace('../online_svn/bj-tran/target/classes/','patch/bj-tran/')
-
print "拷贝svn subclass文件到patch目录: %s ---> %s " % (subclass_path_filename,patchpath_filename)
-
shutil.copy(subclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功,注意该文件是子类哦^_^ *****************************************" % count
-
-
-
elif line.startswith('bj-whm-rest'):
-
#filelist文件路径预处理
-
classpath_filename = line.replace('bj-whm-rest/src/main/java/','../online_svn/bj-whm-rest/target/classes/')
-
classpath_filename = classpath_filename.replace('.java','.class')
-
classpath_filename = classpath_filename.replace('\n','') #去掉换行符
-
#构造patch目录结构
-
patchpath_filename = line.replace('bj-whm-rest/src/main/java/','')
-
patchpath_filename = patchpath_filename.replace('.java','.class')
-
patchpath_filename = patchpath_filename.replace('\n','')
-
patchpath_filename = 'patch/' + 'bj-whm-rest/' + patchpath_filename
-
patchpath = os.path.dirname(patchpath_filename)
-
#如果patch目录不存在,就建立目录
-
try:
-
os.listdir(patchpath)
-
except WindowsError:
-
os.makedirs(patchpath) #makedirs可以在windows 的patch目录下递归建立文件夹
-
#拷贝父类到patch目录下
-
parentclass_path_filename = classpath_filename
-
patchpath_filename = patchpath_filename
-
print "拷贝svn class文件到patch目录: %s ---> %s " % (parentclass_path_filename,patchpath_filename)
-
shutil.copy(parentclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功***************" % count
-
#用glob寻找子类
-
path_filename = os.path.split(classpath_filename) #split:返回一个二元组,包含文件的路径与文件名
-
filename_splitext = os.path.splitext(path_filename[1]) #去掉文件扩展名
-
subclass_path_filenames = glob.glob('%s/%s$*' % (path_filename[0],filename_splitext[0]))
-
#把子类拷贝到patch目录下
-
for subclass_path_filename in subclass_path_filenames:
-
subclass_path_filename = subclass_path_filename.replace('\\',r'/')
-
patchpath_filename = subclass_path_filename.replace('../online_svn/bj-whm-rest/target/classes/','patch/bj-whm-rest/')
-
print "拷贝svn subclass文件到patch目录: %s ---> %s " % (subclass_path_filename,patchpath_filename)
-
shutil.copy(subclass_path_filename,patchpath_filename)
-
count += 1
-
print "***********第%s个文件拷贝成功,注意该文件是子类哦^_^ *****************************************" % count
-
-
-
else:
-
print "%s:该项目没有配置,请联系管理员" % line
-
sys.exit()
-
-
-
#down jar包
-
@hosts('czoms@10.2.88.47')
-
def download_bj_oms_api_jar():
-
get('/opt/bj-oms-core/lib/bj-oms-api-1.0-SNAPSHOT.jar','patch/bj-oms-api/')
-
-
@hosts('czoms@10.2.88.47')
-
def download_bj_oms_domain_jar():
-
get('/opt/bj-oms-core/lib/bj-oms-domain-1.0-SNAPSHOT.jar','patch/bj-oms-domain/')
-
-
@hosts('czoms@10.2.88.40')
-
def download_bj_oms_core_new1_jar():
-
get('/opt/bj-oms-core/lib/bj-oms-core-1.0-SNAPSHOT.jar','patch/bj-oms-core-new1/')
-
-
@hosts('appuser@10.2.88.30')
-
def download_bj_oms_rest_jar():
-
get('/opt/bj-oms-rest/lib/bj-oms-rest-1.0-SNAPSHOT.jar','patch/bj-oms-rest/')
-
-
@hosts('appuser@10.2.88.30')
-
def download_bj_oms_job_jar():
-
get('/opt/bj-oms-job/lib/bj-oms-job-1.0-SNAPSHOT.jar','patch/bj-oms-jobs/')
-
-
@hosts('czoms@10.2.88.47')
-
def download_bj_oms_core_jar():
-
get('/opt/bj-oms-core/lib/bj-oms-core-1.0-SNAPSHOT.jar','patch/bj-oms-core/')
-
-
-
#替换jar包里面的文件
-
def replace_file_to_local_bj_oms_api_jar():
-
with lcd('patch/bj-oms-api/'):
-
local('jar -uvf bj-oms-api-1.0-SNAPSHOT.jar * ')
-
'''
-
def replace_file_to_local_bj_oms_core_new1_jar():
-
with lcd('patch/bj-oms-core-new1/'):
-
local('jar -uvf bj-oms-core-1.0-SNAPSHOT.jar * ')
-
'''
-
-
def replace_file_to_local_bj_oms_domain_jar():
-
with lcd('patch/bj-oms-domain/'):
-
local('jar -uvf bj-oms-domain-1.0-SNAPSHOT.jar * ')
-
-
def replace_file_to_local_bj_oms_job_jar():
-
with lcd('patch/bj-oms-job/'):
-
local('jar -uvf bj-oms-job-1.0-SNAPSHOT.jar * ')
-
-
def replace_file_to_local_bj_oms_rest_jar():
-
with lcd('patch/bj-oms-rest/'):
-
local('jar -uvf bj-oms-rest-1.0-SNAPSHOT.jar * ')
-
-
def replace_file_to_local_bj_oms_core_jar():
-
with lcd('patch/bj-oms-core/'):
-
local('jar -uvf bj-oms-core-1.0-SNAPSHOT.jar * ')
-
-
-
-
-
#backup
-
@hosts('czoms@10.2.88.47')
-
def backup_bj_oms_api_jar():
-
run('dir1=$(date +%Y%m%d%H%M%S) && mkdir /backup/$dir1 && cp -a /opt/bj-oms-core/lib/bj-oms-api-1.0-SNAPSHOT.jar /backup/$dir1')
-
puts('bj-oms-api-1.0-SNAPSHOT.jar包备份到了10.2.88.47的/backup目录下')
-
-
@hosts('czoms@10.2.88.47')
-
def backup_bj_oms_domain_jar():
-
run('dir1=$(date +%Y%m%d%H%M%S) && mkdir /backup/$dir1 && cp -a /opt/bj-oms-core/lib/bj-oms-domain-1.0-SNAPSHOT.jar /backup/$dir1')
-
puts('bj-oms-domain-1.0-SNAPSHOT.jar包备份到了10.2.88.47的/backup目录下')
-
-
@hosts('czoms@10.2.88.40')
-
def backup_bj_oms_core_new1_jar():
-
run('dir1=$(date +%Y%m%d%H%M%S) && mkdir /backup/$dir1 && cp -a /opt/bj-oms-core/lib/bj-oms-core-1.0-SNAPSHOT.jar /backup/$dir1')
-
puts('bj-oms-core-1.0-SNAPSHOT.jar包备份到了10.2.88.40的/backup目录下')
-
-
@hosts('appuser@10.2.88.30')
-
def backup_bj_oms_rest_jar():
-
run('dir1=$(date +%Y%m%d%H%M%S) && mkdir /backup/$dir1 && cp -a /opt/bj-oms-rest/lib/bj-oms-rest-1.0-SNAPSHOT.jar /backup/$dir1')
-
puts('bj-oms-rest-1.0-SNAPSHOT.jar包备份到了10.2.88.30的/backup/目录下')
-
-
@hosts('appuser@10.2.88.30')
-
def backup_bj_oms_job_jar():
-
run('dir1=$(date +%Y%m%d%H%M%S) && mkdir /backup/bj-oms-job/$dir1 && cp -a /opt/bj-oms-job/lib/bj-oms-job-1.0-SNAPSHOT.jar /backup/bj-oms-job/$dir1')
-
puts('bj-oms-job-1.0-SNAPSHOT.jar包备份到了10.2.88.30的/backup/目录下')
-
-
@hosts('appuser@10.2.88.30')
-
def backup_bj_web():
-
run('dir1=$(date +%Y%m%d%H%M%S) && mkdir /backup/$dir1 && cp -a /opt/tomcat-oms/webapps/bj-web /backup/$dir1')
-
puts('bj-web包备份到了10.2.88.30的/backup/目录下')
-
-
@hosts('czoms@10.2.88.47')
-
def backup_bj_oms_core_jar():
-
run('dir1=$(date +%Y%m%d%H%M%S) && mkdir /backup/$dir1 && cp -a /opt/bj-oms-core/lib/bj-oms-core-1.0-SNAPSHOT.jar /backup/$dir1')
-
puts('bj_oms_core包备份到了10.2.88.30的/backup/目录下')
-
-
-
#发版,上传jar包
-
@hosts('czoms@10.2.88.47','czoms@10.2.88.48','czoms@10.2.88.37','czoms@10.2.88.46','czoms@10.2.88.40','czoms@10.2.88.41')
-
def put_bj_oms_api_jar_4748_3746_4041():
-
with lcd ('patch/bj-oms-api/'):
-
put('bj-oms-api-1.0-SNAPSHOT.jar','/opt/bj-oms-core/lib/')
-
-
@hosts('appuser@10.2.88.30')
-
def put_bj_oms_api_jar_30():
-
with lcd ('patch/bj-oms-api/'):
-
put('bj-oms-api-1.0-SNAPSHOT.jar','/opt/bj-oms-rest/lib')
-
put('bj-oms-api-1.0-SNAPSHOT.jar','/opt/bj-oms-job/lib')
-
put('bj-oms-api-1.0-SNAPSHOT.jar','/opt/tomcat-oms/webapps/bj-web/WEB-INF/lib')
-
-
-
@hosts('czoms@10.2.88.47','czoms@10.2.88.48','czoms@10.2.88.37','czoms@10.2.88.46','czoms@10.2.88.40','czoms@10.2.88.41')
-
def put_bj_oms_domain_jar_4748_3746_4041():
-
with lcd ('patch/bj-oms-domain/'):
-
put('bj-oms-domain-1.0-SNAPSHOT.jar','/opt/bj-oms-core/lib')
-
-
@hosts('appuser@10.2.88.30')
-
def put_bj_oms_domain_jar_30():
-
with lcd ('patch/bj-oms-domain/'):
-
put('bj-oms-domain-1.0-SNAPSHOT.jar','/opt/bj-oms-rest/lib')
-
put('bj-oms-domain-1.0-SNAPSHOT.jar','/opt/bj-oms-job/lib')
-
put('bj-oms-domain-1.0-SNAPSHOT.jar','/opt/tomcat-oms/webapps/bj-web/WEB-INF/lib')
-
-
-
@roles('cz-oms-core-new1')
-
def put_bj_oms_core_new1_jar():
-
with lcd ('patch/bj-oms-core-new1/'):
-
put('bj-oms-core-1.0-SNAPSHOT.jar','/opt/bj-oms-core/lib')
-
-
@roles('cz')
-
def put_bj_oms_rest_jar():
-
with lcd ('patch/bj-oms-rest/'):
-
put('bj-oms-rest-1.0-SNAPSHOT.jar','/opt/bj-oms-rest/lib')
-
-
@roles('cz')
-
def put_bj_oms_job_jar():
-
with lcd ('patch/bj-oms-jobs/'):
-
put('bj-oms-job-1.0-SNAPSHOT.jar','/opt/bj-oms-job/lib')
-
-
@roles('cz')
-
def put_bj_web():
-
with lcd ('patch/'):
-
put('bj-web.zip','/opt/tomcat-oms/webapps')
-
run('cd /opt/tomcat-oms/webapps && unzip -o bj-web.zip && rm -rf bj-web.zip')
-
-
@roles('cz-oms-core')
-
def put_bj_oms_core_jar():
-
with lcd ('patch/bj-oms-core'):
-
put('bj-oms-core-1.0-SNAPSHOT.jar','/opt/bj-oms-core/lib')
-
-
-
#重启服务
-
@roles('cz-oms-core')
-
def stop_cz_oms_core_4748():
-
sudo('/opt/bj-oms-core/bin/stop.sh',pty=False)
-
-
@roles('cz-oms-core')
-
def start_cz_oms_core_4748():
-
sudo('/opt/bj-oms-core/bin/start.sh',pty=False)
-
-
-
-
@roles('cz-oms-core-new')
-
def stop_cz_oms_core__new_3746():
-
sudo('/opt/bj-oms-core/bin/stop.sh',pty=False)
-
-
@roles('cz-oms-core-new')
-
def start_cz_oms_core__new_3746():
-
sudo('nohup /opt/bj-oms-core/bin/start.sh &',pty=False)
-
-
-
-
@roles('cz-oms-core-new1')
-
def stop_cz_oms_core__new1_4041():
-
sudo('/opt/bj-oms-core/bin/stop.sh',pty=False)
-
-
@roles('cz-oms-core-new1')
-
def start_cz_oms_core__new1_4041():
-
sudo('/opt/bj-oms-core/bin/start.sh',pty=False)
-
-
-
-
-
@roles('cz')
-
def stop_cz_bj_oms_rest_30():
-
sudo('/opt/bj-oms-rest/bin/stop.sh',pty=False)
-
-
@roles('cz')
-
def start_cz_bj_oms_rest_30():
-
sudo('nohup /opt/bj-oms-rest/bin/start.sh &',pty=False)
-
-
-
-
@roles('cz')
-
def stop_cz_bj_oms_job_30():
-
sudo('/opt/bj-oms-job/bin/stop.sh',pty=False)
-
-
@roles('cz')
-
def start_cz_bj_oms_job_30():
-
sudo('/opt/bj-oms-job/bin/start.sh',pty=False)
-
-
-
-
@roles('cz')
-
def stop_cz_tomcat_oms_30():
-
sudo('/opt/tomcat-oms/bin/shutdown.sh',pty=False)
-
-
@roles('cz')
-
def start_cz_tomcat_oms_30():
-
sudo('/opt/tomcat-oms/bin/start.sh',pty=False)
-
-
-
-
-
-
-
-
-
#主程序
-
if __name__ == '__main__':
-
#Update SVN
-
while True:
-
temp = str(raw_input('1) 请问你要Update SVN吗?[yes/no]:'.decode('utf-8').encode('gb2312')))
-
tips = temp.strip().lower()
-
if tips == 'yes':
-
print "Now begin Update SVN..."
-
UpdateSVN('../online_svn/bj-oms/bj-oms-api')
-
UpdateSVN('../online_svn/bj-oms/bj-oms-core')
-
UpdateSVN('../online_svn/bj-oms/bj-oms-core-new')
-
UpdateSVN('../online_svn/bj-oms/bj-oms-core-new1')
-
UpdateSVN('../online_svn/bj-oms/bj-oms-domain')
-
UpdateSVN('../online_svn/bj-oms/bj-oms-jobs')
-
UpdateSVN('../online_svn/bj-oms/bj-oms-rest')
-
UpdateSVN('../online_svn/bj-tran')
-
UpdateSVN('../online_svn/bj-whm')
-
break
-
elif tips == 'no':
-
break
-
#删除patch目录下所有内容
-
while True:
-
temp = str(raw_input('2)删除patch目录下所有目录吗?[yes/no]:'.decode('utf-8').encode('gb2312')))
-
tips = temp.strip().lower()
-
if tips == 'yes':
-
for line in os.listdir('patch'):
-
shutil.rmtree('patch/%s' % line)
-
break
-
elif tips == 'no':
-
break
-
-
#提示是否eclipse编译代码
-
while True:
-
temp = str(raw_input('3) 提示:请问你手工通过eclse编译css代码了吗[yes/no]:'))
-
tips = temp.strip().lower()
-
if tips == 'yes':
-
break
-
elif tips == 'no':
-
break
-
-
-
#根据filelist生成发版目录
-
while True:
-
temp = str(raw_input('4)根据filelist生成发版目录吗?[yes/no]:'.decode('utf-8').encode('gb2312')))
-
tips = temp.strip().lower()
-
if tips == 'yes':
-
print "Now begin generate faban dir..."
-
faban_dir()
-
break
-
elif tips == 'no':
-
break
-
-
-
#unzip
-
while True:
-
temp = str(raw_input('5)解压zip包到本地patch目录吗?[yes/no]:'.decode('utf-8').encode('gb2312')))
-
tips = temp.strip().lower()
-
if tips == 'yes':
-
print "Now begin unzip jar to patch dir..."
-
output = subprocess.check_output(['fab','unzip'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
break
-
elif tips == 'no':
-
break
-
-
#download jar to localpath
-
while True:
-
temp = str(raw_input('6)把jar包下载到本地的patch目录吗?[yes/no]:'.decode('utf-8').encode('gb2312')))
-
tips = temp.strip().lower()
-
if tips == 'yes':
-
print "Now begin download jar to patch dir..."
-
dirs = [item for item in os.listdir('patch/') if not item.endswith('zip')]
-
for index,item in enumerate(dirs,1):
-
if item == 'bj-oms-api':
-
print "%d: %s is downoading..." % (index,item)
-
output = subprocess.check_output(['fab','download_bj_oms_api_jar'],shell=True,stderr = subprocess.STDOUT) #shell=True在windows时可以关闭cmd窗口的回显
-
print output
-
elif item == "bj-oms-core-new1":
-
print "%d: %s is downoading..." % (index,item)
-
output = subprocess.check_output(['fab','download_bj_oms_core_new1_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == "bj-oms-rest":
-
print "%d: %s is downoading..." % (index,item)
-
output = subprocess.check_output(['fab','download_bj_oms_rest_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == "bj-oms-jobs":
-
print "%d: %s is downoading..." % (index,item)
-
output = subprocess.check_output(['fab','download_bj_oms_job_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == "bj-oms-domain":
-
print "%d: %s is downoading..." % (index,item)
-
output = subprocess.check_output(['fab','download_bj_oms_domain_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == "bj-oms-core":
-
print "%d: %s is downoading..." % (index,item)
-
output = subprocess.check_output(['fab','download_bj_oms_core_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == "bj-web":
-
pass
-
else:
-
print('%s下载失败,因为该文件没有在发版程序里面配置,请联系管理员') % item
-
sys.exit()
-
break
-
elif tips == 'no':
-
break
-
-
-
-
#replace file to jar
-
while True:
-
temp = str(raw_input('7)替换jar包里面的配置文件吗?[yes/no]:'.decode('utf-8').encode('gb2312')))
-
tips = temp.strip().lower()
-
if tips == 'yes':
-
print "Now begin replace class file from jar ..."
-
dirs = [item for item in os.listdir('patch/') if not item.endswith('zip')]
-
for index,item in enumerate(dirs,1):
-
if item == 'bj-oms-api':
-
print "%d: %s is replacing jar now..." % (index,item)
-
output = subprocess.check_output(['fab','replace_file_to_local_bj_oms_api_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == "bj-oms-core-new1":
-
while True:
-
temp = str(raw_input('注意:因bj-oms-core-new1包里面有重复文件,所以需要手工更新jar包里面的内容,你更新了吗?[yes/no]:'.decode('utf-8').encode('gb2312')))
-
tips = temp.strip().lower()
-
if tips == 'yes':
-
break
-
elif tips == 'no':
-
break
-
elif item == 'bj-oms-domain':
-
print "%d: %s is replacing jar now..." % (index,item)
-
output = subprocess.check_output(['fab','replace_file_to_local_bj_oms_domain_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-oms-job':
-
print "%d: %s is replacing jar now..." % (index,item)
-
output = subprocess.check_output(['fab','replace_file_to_local_bj_oms_job_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-oms-rest':
-
print "%d: %s is replacing jar now..." % (index,item)
-
output = subprocess.check_output(['fab','replace_file_to_local_bj_oms_rest_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-oms-core':
-
print "%d: %s is replacing jar now..." % (index,item)
-
output = subprocess.check_output(['fab','replace_file_to_local_bj_oms_core_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
break
-
elif tips == 'no':
-
break
-
-
-
-
-
#backup jar
-
while True:
-
temp = str(raw_input('8)在正式发版前希望备份远程服务器的jar包吗?[yes/no]:'.decode('utf-8').encode('gb2312')))
-
tips = temp.strip().lower()
-
if tips == 'yes':
-
print "Now begin backup jar to /backup..."
-
dirs = [item for item in os.listdir('patch/') if not item.endswith('zip')]
-
for index,item in enumerate(dirs,1):
-
if item == 'bj-oms-api':
-
print "%d: %s is backuping..." % (index,item)
-
output = subprocess.check_output(['fab','backup_bj_oms_api_jar'],shell=True,stderr = subprocess.STDOUT) #shell=True在windows时可以关闭cmd窗口的回显
-
print output
-
print
-
elif item == 'bj-oms-domain':
-
print "%d: %s is backuping..." % (index,item)
-
output = subprocess.check_output(['fab','backup_bj_oms_domain_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-oms-core-new1':
-
print "%d: %s is backuping..." % (index,item)
-
output = subprocess.check_output(['fab','backup_bj_oms_core_new1_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-oms-rest':
-
print "%d: %s is backuping..." % (index,item)
-
output = subprocess.check_output(['fab','backup_bj_oms_rest_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-oms-jobs':
-
print "%d: %s is backuping..." % (index,item)
-
output = subprocess.check_output(['fab','backup_bj_oms_job_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-web':
-
print "%d: %s is backuping..." % (index,item)
-
output = subprocess.check_output(['fab','backup_bj_web'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-oms-core':
-
print "%d: %s is backuping..." % (index,item)
-
output = subprocess.check_output(['fab','backup_bj_oms_core_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
break
-
elif tips == 'no':
-
break
-
-
#发版,上传jar包到生产服务器
-
while True:
-
temp = str(raw_input('9)请问开始向生产服务器发版吗?[yes/no]:'.decode('utf-8').encode('gb2312')))
-
tips = temp.strip().lower()
-
if tips == 'yes':
-
print "Now begin publish..."
-
dirs = [item for item in os.listdir('patch/') if not item.endswith('zip')]
-
for index,item in enumerate(dirs,1):
-
if item == 'bj-oms-api':
-
print "%d: %s is publishing..." % (index,item)
-
output = subprocess.check_output(['fab','put_bj_oms_api_jar_4748_3746_4041'],shell=True,stderr = subprocess.STDOUT) #shell=True在windows时可以关闭cmd窗口的回显
-
print output
-
output = subprocess.check_output(['fab','put_bj_oms_api_jar_30'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
print
-
elif item == 'bj-oms-domain':
-
print "%d: %s is publishing..." % (index,item)
-
output = subprocess.check_output(['fab','put_bj_oms_domain_jar_4748_3746_4041'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
output = subprocess.check_output(['fab','put_bj_oms_domain_jar_30'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-oms-core-new1':
-
print "%d: %s is publishing..." % (index,item)
-
output = subprocess.check_output(['fab','put_bj_oms_core_new1_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-oms-rest':
-
print "%d: %s is publishing..." % (index,item)
-
output = subprocess.check_output(['fab','put_bj_oms_rest_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-oms-jobs':
-
print "%d: %s is publishing..." % (index,item)
-
output = subprocess.check_output(['fab','put_bj_oms_job_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-web':
-
print "%d: %s is publishing..." % (index,item)
-
output = subprocess.check_output(['fab','put_bj_web'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif item == 'bj-oms-core':
-
print "%d: %s is publishing..." % (index,item)
-
output = subprocess.check_output(['fab','put_bj_oms_core_jar'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
break
-
elif tips == 'no':
-
break
-
-
#关闭服务
-
while True:
-
temp = str(raw_input('10)请问开始关闭服务吗,包含服务tomcat、rest、job、core?[yes/no]:'.decode('utf-8').encode('gb2312')))
-
tips = temp.strip().lower()
-
if tips == 'yes':
-
print "Now begin stop service..."
-
output = subprocess.check_output(['fab','stop_cz_tomcat_oms_30'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
output = subprocess.check_output(['fab','stop_cz_bj_oms_rest_30'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
output = subprocess.check_output(['fab','stop_cz_bj_oms_job_30'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
output = subprocess.check_output(['fab','stop_cz_oms_core_4748'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
output = subprocess.check_output(['fab','stop_cz_oms_core__new_3746'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
output = subprocess.check_output(['fab','stop_cz_oms_core__new1_4041'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
-
elif tips == 'no':
-
break
-
-
#开启服务
-
while True:
-
temp = str(raw_input('11)请问开始启动服务吗,包含服务core、tomcat、rest、job?[yes/no]:'.decode('utf-8').encode('gb2312')))
-
tips = temp.strip().lower()
-
if tips == 'yes':
-
print "Now begin stop service..."
-
output = subprocess.check_output(['fab','start_cz_oms_core__new1_4041'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
output = subprocess.check_output(['fab','start_cz_oms_core__new_3746'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
output = subprocess.check_output(['fab','start_cz_oms_core_4748'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
output = subprocess.check_output(['fab','start_cz_tomcat_oms_30'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
output = subprocess.check_output(['fab','start_cz_bj_oms_rest_30'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
output = subprocess.check_output(['fab','start_cz_bj_oms_job_30'],shell=True,stderr = subprocess.STDOUT)
-
print output
-
elif tips == 'no':
-
break
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28916011/viewspace-2153243/
,如需转载,请注明出处,否则将追究法律责任。