首页 > 代码库 > SOA自动部署脚本(发布、更新、回滚)
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) update_dir=os.path.exists(update_file_path) data=http://www.mamicode.com/os.listdir(update_file_path)"%Y%m%d%H%M%S", time.localtime()) release_dir=work_dir + ‘_‘ + time_tag os.mkdir(release_dir) os.system(‘rm -rf %s‘ %work_dir) os.system(‘unzip %s -d %s‘ %(filename,release_dir)) os.system(‘ln -s %s %s‘ %(release_dir,work_dir)) info=‘软件包已成功更新至:‘ + release_dir log_text(info) print ‘\033[1;31;40m %s \033[0m‘ %info def log_text(info): logging.basicConfig(level=logging.DEBUG, format=‘%(asctime)s %(message)s‘, datefmt=‘%d %b %Y %H:%M:%S‘, filename=‘/data/logs/update_soa.log‘, filemode=‘a‘) logging.debug(info) def Incrementally_udate(): if update_dir != 1: print ‘\033[1;31;40m创建更新文件存储目录!\033[0m‘ os.system(‘mkdir -p %s‘ %update_file_path) sys.exit() if check_dir == 1: os.chdir(work_dir) find_command=‘find . -name "%s" ‘ %update_file aresult=commands.getoutput(find_command) if len(aresult) != 0: file_path=aresult.rstrip(update_file) os.chdir(file_path) time_tag=time.strftime("%Y%m%d%H%M%S", time.localtime()) bak_result=commands.getstatusoutput(‘mv %s %s.%s‘ %(update_file,update_file,time_tag)) if bak_result[0] == 0: update_file_abs_path=update_file_path + update_file update_result=commands.getstatusoutput(‘mv -i %s %s‘ %(update_file_abs_path,update_file)) if update_result[0] == 0: result=os.listdir(update_file_path) info=‘更新‘ + work_dir + aresult.lstrip(‘\.‘) + ‘成功‘ log_text(info) print ‘\033[1;31;40m %s \033[0m‘ %info else: print ‘\033[1;31;40m工程目录中无此文件!\033[0m‘ sys.exit() else: print ‘\033[1;31;40m工程目录不存在!\033[0m‘ sys.exit() def rollback(): def find_soa(i): a=re.findall(r‘soa_\d{14}$‘,i) return a os.chdir(‘/data/company‘) soa_list=os.listdir(‘/data/company‘) result=filter(find_soa,soa_list) sort_list=[] for t in result: sort_list.append(t.split(‘soa_‘)[1]) sort_list.sort() back_ver=‘soa_‘ + sort_list[-2] last_ver=‘soa_‘ + sort_list[-1] os.system(‘rm -rf /data/company/%s‘ %last_ver) os.system(‘rm -rf /data/company/soa‘) os.system(‘ln -s %s /data/company/soa‘ %back_ver) info=‘代码回滚至:‘ + back_ver log_text(info) print ‘\033[1;31;40m %s \033[0m‘ %info if __name__ == ‘__main__‘: while True: print ‘\033[1;31;40m‘ print ‘‘‘ ********* SOA 程序更新 ********* 1.全量更新 2.增量更新 3.代码回滚 4.退出程序 ********************************* ‘‘‘ print ‘\033[0m‘ choice=raw_input(‘\033[1;31;40m请输入您的选择:\033[0m‘) if choice == ‘1‘: print ‘\033[1;31;40m‘ print ‘您选择的项目是全量更新‘ print ‘\033[0m‘ Total_update() if choice == ‘2‘: print ‘\033[1;31;40m‘ print ‘您选择的项目是增量更新‘ print ‘\033[0m‘ if len(data) == 0: print ‘\033[1;31;40m无更新文件,请检查!\033[0m‘ backup_tag=time.strftime("%Y%m%d%H%M%S", time.localtime()) + ‘zengliangbeifen‘ bresult=commands.getoutput(‘ls -l %s‘ %work_dir) real_dir=str(bresult.split(‘->‘)[-1]) os.chdir(‘/data/company‘) os.system (‘cp -r %s %s_%s‘ %(real_dir,real_dir,backup_tag)) for update_file in data: Incrementally_udate() if choice == ‘3‘: print ‘\033[1;31;40m‘ print ‘您选择的项目是代码回滚‘ print ‘\033[0m‘ rollback() if choice == ‘4‘: print ‘\033[1;31;40m‘ print ‘您选择的项目是退出程序‘ print ‘\033[0m‘ sys.exit()
本文出自 “吾在庐山” 博客,请务必保留此出处http://147546.blog.51cto.com/137546/1858108
SOA自动部署脚本(发布、更新、回滚)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。