功能:使用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博客 ” ,链接:http://blog.itpub.net/28916011/viewspace-2153243/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28916011/viewspace-2153243/