def scriptCheck(filename): curDir = os.path.abspath(os.path.dirname(__file__)) getUpdateDirShell = remoteShellDir + "/" + filename remoteMd5 = run("if [ -f %s ];then md5sum %s|awk '{print $1}';fi"%(getUpdateDirShell,getUpdateDirShell)) localMd5 = common.calMd5(curDir + "/" + filename) if remoteMd5 != localMd5: put(curDir + "/" + filename,"%s/"%remoteShellDir)
def start(): run("mkdir -p %s "%remoteShellDir) global remoteTempDir remoteTempDir = "/app/opbak/mobileWwwTestUpdate/%s/%s/%s" %(game, language, version) with lcd("/app/online/%s/frontend/%s/%s"%(game, language, version)): local("dos2unix md5.txt") local("chown virtual_user.virtual_user md5.txt") local("md5sum -c md5.txt") run("rm -rf %s && mkdir -p %s"%(remoteTempDir, remoteTempDir)) with cd(remoteTempDir): zipExsits = run("if [ -f %s.zip ];then echo 1;else echo 0;fi"%version) if zipExsits == "1": localZipMd5 = common.calMd5("/app/online/%s/frontend/%s/%s/%s.zip"%(game, language, version, version)) remoteZipMd5 = run("md5sum %s.zip|cut -d ' ' -f1"%version) if localZipMd5.strip() != remoteZipMd5.strip(): print "开始上传zip包 ..." put(version + ".zip", remoteTempDir) else: put(version + ".zip", remoteTempDir) put("md5.txt", remoteTempDir) run("dos2unix md5.txt") run("md5sum -c md5.txt") run("unzip -o -q %s.zip"%version ) versionCheck() backupRes() with cd(remoteTempDir): run("cp -r %s %s/"%(version, wwwDir)) if zipDiff: calZipFile() with cd(remoteTempDir): for each_type in updateTypes: run("cp -rf {0} {1}/".format(each_type, wwwDir)) local("rm -rf /app/online/%s/frontend/%s/%s"%(game,language,version))
def scriptDeploy(sshObj, ip, server): ''' 更新脚本的md5比对,如果跟本地的不一致则重新上传 判断更新操作目录是否存在,如果存在则不再进行更新 ''' localmd5 = common.calMd5(updateScriptPath + "/" + updateScript) status, out, err = sshObj.cmd("if [ ! -d %s ];then mkdir -p %s;fi" % (remoteLogDir, remoteLogDir)) if status != 0: state.errorResult[server] = "创建工作目录失败" + err else: status, remotemd5, stderr = sshObj.cmd( "if [ -f %s/%s ];then md5sum %s/%s ;fi" % (remoteShellPath, updateScript, remoteShellPath, updateScript)) if status != 0: state.errorResult[server] = stderr else: if localmd5.strip() != remotemd5.strip(): try: sshObj.put(updateScriptPath + "/" + updateScript, remote_path=remoteShellPath) except Exception, e: state.errorResult[server] = str(e) status, out, err = sshObj.cmd( "if [ -d /app/opbin/update/%s/%s ];then echo 1;else echo 0;fi" % (state.options.game, remoteWorkDir)) if status != 0 or out == 1: state.errorResult[server] = "/app/opbin/update/%s/%s目录已经存在" % ( state.options.game, remoteWorkDir)
def scriptCheck(filename): curDir = os.path.abspath(os.path.dirname(__file__)) getUpdateDirShell = remoteShellDir + "/" + filename remoteMd5 = run("if [ -f %s ];then md5sum %s|awk '{print $1}';fi"%(getUpdateDirShell, getUpdateDirShell)) localMd5 = common.calMd5(curDir + "/" + filename) if remoteMd5 != localMd5: put(curDir + "/" + filename, "%s/"%remoteShellDir)
def filecheck(ip): dir = os.path.dirname(os.path.abspath(__file__)) sshObj = getssh(ip) r1 = sshObj.cmd("test -f /app/opbin/allinone/serverlistOnServer.py && md5sum /app/opbin/allinone/serverlistOnServer.py|cut -d ' ' -f1") #print r1[1].strip(),common.calMd5(dir+"/serverlistOnServer.py") if r1[0] != 0 or r1[1].strip() != common.calMd5(dir+"/serverlistOnServer.py"): sshObj.cmd("[ ! -d /app/opbin/allinone/ ] && mkdir -p /app/opbin/allinone/") sshObj.put(dir + "/serverlistOnServer.py",remote_path="/app/opbin/allinone/",recursive=True)
def resCopyToOnline(): #获取在线资源目录中,需要将差异文件放入其中的目录 localDir = os.path.abspath(os.path.dirname(__file__)) scriptMd5 = cmd( "if [ -f /app/opbin/workspace/get_update_dir.py ];then md5sum /app/opbin/workspace/get_update_dir.py |awk '{print $1}';fi" ) localScriptMd5 = common.calMd5(localDir + "/get_update_dir.py") if scriptMd5 != localScriptMd5: sshobj.put(localDir + "/get_update_dir.py", remote_path="/app/opbin/workspace/") oldDirs = json.loads( cmd("python /app/opbin/workspace/get_update_dir.py '%s' '%s' '%s'" % (onlineDir, startVersion, version))) if not oldDirs["result"]: raise Exception(oldDirs["msg"]) oldDirsList = oldDirs["dir"] #将测试环境中最新的版本资源目录复制到线上环境 cmd("cp -r %s/%s %s/" % (onlineTestDir, version, onlineDir)) #复制最新版本到各版本的差异包到线上 if zipMode: for dir in oldDirsList: if dir == version: print "%s 版本跟需要更新的版本一致,不需要差异包" % dir continue print "开始处理%s的差异包..." % dir if hd: for t in ["res", "hd_res"]: dirCheck = cmd( "if [ -d %s/%s/%s ];then echo 1;else echo 0;fi" % (onlineDir, dir, t)) if dirCheck == "1": cmd("cp %s/%s/%s/%s.zip %s/%s/%s/" % (onlineTestDir, dir, t, version, onlineDir, dir, t)) cmd("cp %s/%s/%s/%s.lua %s/%s/%s/" % (onlineTestDir, dir, t, version, onlineDir, dir, t)) cmd("if [ -f %s/%s/%s/index.lua ];then cp %s/%s/%s/index.lua %s/%s/%s/" % (onlineTestDir, dir, t, onlineTestDir, dir, t, onlineDir, dir, t)) else: print "%s/%s/%s 不存在" % (onlineDir, dir, t) else: cmd("cp -r %s/%s/%s.zip %s/%s/" % (onlineTestDir, dir, version, onlineDir, dir)) cmd("cp -r %s/%s/%s.lua %s/%s/" % (onlineTestDir, dir, version, onlineDir, dir)) cmd("if [ -f %s/%s/index.lua ];then cp %s/%s/index.lua %s/%s/;fi" % (onlineTestDir, dir, onlineTestDir, dir, onlineDir, dir)) #将version.lua文件更新到线上 if updateType in ["appstore", "all"]: cmd("cp %s/appstore/version.lua %s/appstore/" % (onlineTestDir, onlineDir)) if updateType in ["jailbreak", "all"]: cmd("cp %s/jailbreak/version.lua %s/jailbreak/" % (onlineTestDir, onlineDir))
def resCopyToOnline(): #获取在线资源目录中,需要将差异文件放入其中的目录 localDir = os.path.abspath(os.path.dirname(__file__)) scriptMd5 = cmd("if [ -f /app/opbin/workspace/get_update_dir.py ];then md5sum /app/opbin/workspace/get_update_dir.py |awk '{print $1}';fi") localScriptMd5 = common.calMd5(localDir + "/get_update_dir.py") if scriptMd5 != localScriptMd5: sshobj.put(localDir + "/get_update_dir.py",remote_path="/app/opbin/workspace/") oldDirs = json.loads(cmd("python /app/opbin/workspace/get_update_dir.py '%s' '%s' '%s' '%s' '%s'"%(onlineDir,startVersion,version,updateType,hd))) if not oldDirs["result"]: raise Exception(oldDirs["msg"]) oldDirsList = oldDirs["dir"] #如果为appstore64,首先检查目标版本中是否存在main.lua if updateType == "appstore64": if not hd: cmd("test -f %s/%s/main.lua"%(onlineTestDir,version)) else: cmd("if [ -d %s/%s/res ];then test -f %s/%s/res/main.lua;fi"%(onlineTestDir,version,onlineTestDir,version)) cmd("if [ -d %s/%s/hd_res ];then test -f %s/%s/hd_res/main.lua;fi"%(onlineTestDir,version,onlineTestDir,version)) #将测试环境中最新的版本资源目录复制到线上环境 cmd("cp -r %s/%s %s/"%(onlineTestDir,version,onlineDir)) #复制最新版本到各版本的差异包到线上 if zipMode: for dir in oldDirsList: if dir == version: print "%s 版本跟需要更新的版本一致,不需要差异包"%dir sys.stdout.flush() continue print "开始处理%s的差异包..."%dir sys.stdout.flush() if hd: for t in ["res","hd_res"]: dirCheck = cmd("if [ -d %s/%s/%s ];then echo 1;else echo 0;fi"%(onlineDir,dir,t)) if dirCheck.strip() == "1": cmd("cp %s/%s/%s/%s.zip %s/%s/%s/"%(onlineTestDir,dir,t,version,onlineDir,dir,t)) cmd("cp %s/%s/%s/%s.lua %s/%s/%s/"%(onlineTestDir,dir,t,version,onlineDir,dir,t)) cmd("if [ -f %s/%s/%s/index.lua ];then cp %s/%s/%s/index.lua %s/%s/%s/;fi"%(onlineTestDir,dir,t,onlineTestDir,dir,t,onlineDir,dir,t)) else: print "%s/%s/%s 不存在"%(onlineDir,dir,t) sys.stdout.flush() else: cmd("cp -r %s/%s/%s.zip %s/%s/"%(onlineTestDir,dir,version,onlineDir,dir)) cmd("cp -r %s/%s/%s.lua %s/%s/"%(onlineTestDir,dir,version,onlineDir,dir)) cmd("if [ -f %s/%s/index.lua ];then cp %s/%s/index.lua %s/%s/;fi"%(onlineTestDir,dir,onlineTestDir,dir,onlineDir,dir)) #将version.lua文件更新到线上 if updateType in ["appstore64"]: cmd("cp %s/appstore64/version.lua %s/appstore64/"%(onlineTestDir,onlineDir)) #手游debug模式开关,线上一定置为0 cmd("grep 'sys_version.debug' %s/appstore64/version.lua;if [ $? -eq 0 ];then sed -i '/sys_version.debug/s/1/0/g' %s/appstore64/version.lua;fi"%(onlineDir,onlineDir)) if updateType in ["appstore","all"]: cmd("cp %s/appstore/version.lua %s/appstore/"%(onlineTestDir,onlineDir)) #手游debug模式开关,线上一定置为0 cmd("grep 'sys_version.debug' %s/appstore/version.lua;if [ $? -eq 0 ];then sed -i '/sys_version.debug/s/1/0/g' %s/appstore/version.lua;fi"%(onlineDir,onlineDir)) if updateType in ["jailbreak","all"]: cmd("cp %s/jailbreak/version.lua %s/jailbreak/"%(onlineTestDir,onlineDir)) cmd("grep 'sys_version.debug' %s/jailbreak/version.lua;if [ $? -eq 0 ];then sed -i '/sys_version.debug/s/1/0/g' %s/jailbreak/version.lua;fi"%(onlineDir,onlineDir)) cmd("if [ -f %s/version.lua ];then cp %s/jailbreak/version.lua %s/version.lua;fi"%(onlineDir,onlineDir,onlineDir))
def start(): run("mkdir -p %s " % remoteShellDir) global remoteTempDir remoteTempDir = "/app/opbak/mobileWwwTestUpdate/%s/%s" % (game, version) with lcd("/app/online/%s/frontend/%s/%s" % (game, language, version)): local("dos2unix md5.txt") local("chown virtual_user.virtual_user md5.txt") local("md5sum -c md5.txt") run("rm -rf %s && mkdir -p %s" % (remoteTempDir, remoteTempDir)) with cd(remoteTempDir): zipExsits = run("if [ -f %s.zip ];then echo 1;else echo 0;fi" % version) if zipExsits == "1": localZipMd5 = common.calMd5( "/app/online/%s/frontend/%s/%s/%s.zip" % (game, language, version, version)) remoteZipMd5 = run("md5sum %s.zip|cut -d ' ' -f1" % version) if localZipMd5.strip() != remoteZipMd5.strip(): put(version + ".zip", remoteTempDir) else: put(version + ".zip", remoteTempDir) #put(version + ".zip",remoteTempDir) put("md5.txt", remoteTempDir) run("dos2unix md5.txt") run("md5sum -c md5.txt") run("unzip -o -q %s.zip" % version) #appstore64 必须包含main.lua,否则为appstore32或者越狱 if updateType in ["appstore64"]: if not hd: run("test -f %s/main.lua" % version) else: run("if [ -d %s/res ];then test -f %s/res/main.lua;fi" % version) run("if [ -d %s/hd_res ];then test -f %s/hd_res/main.lua;fi" % version) versionCheck() backupRes() with cd(remoteTempDir): run("cp -r %s %s/" % (version, wwwDir)) if zipDiff: calZipFile() with cd(remoteTempDir): #run("cp -r %s %s/"%(version,wwwDir)) if updateType in ["appstore64"]: run("cp -r appstore64/version.lua %s/appstore64/" % wwwDir) if updateType in ["appstore", "all"]: run("cp -r appstore/version.lua %s/appstore/" % wwwDir) if updateType in ["jailbreak", "all"]: run("cp -r jailbreak/version.lua %s/jailbreak/" % wwwDir) run("if [ -f %s/version.lua ];then cp jailbreak/version.lua %s/version.lua;fi" % (wwwDir, wwwDir)) local("rm -rf /app/online/%s/frontend/%s/%s" % (game, language, version))
def start(): run("mkdir -p %s "%remoteShellDir) global remoteTempDir remoteTempDir = "/app/opbak/mobileWwwTestUpdate/%s/%s" %(game, version) with lcd("/app/online/%s/frontend/%s/%s"%(game,language,version)): local("dos2unix md5.txt") local("chown virtual_user.virtual_user md5.txt") local("md5sum -c md5.txt") run("rm -rf %s && mkdir -p %s"%(remoteTempDir,remoteTempDir)) with cd(remoteTempDir): zipExsits = run("if [ -f %s.zip ];then echo 1;else echo 0;fi"%version) if zipExsits == "1": localZipMd5 = common.calMd5("/app/online/%s/frontend/%s/%s/%s.zip"%(game,language,version,version)) remoteZipMd5 = run("md5sum %s.zip|cut -d ' ' -f1"%version) if localZipMd5.strip() != remoteZipMd5.strip(): put(version + ".zip",remoteTempDir) else: put(version + ".zip",remoteTempDir) #put(version + ".zip",remoteTempDir) put("md5.txt",remoteTempDir) run("dos2unix md5.txt") run("md5sum -c md5.txt") run("unzip -o -q %s.zip"%version ) #appstore64 必须包含main.lua,否则为appstore32或者越狱 if updateType in ["appstore64"]: run("test -f %s/main.lua"%version) #if hd: # res_64_dir = run("if [ -d %s/res_64 ];then echo 1 ;else echo 0 ;fi"%version) # hd_res_64_dir = run("if [ -d %s/hd_res_64 ];then echo 1 ;else echo 0;fi"%version) # if res_64_dir.strip() != "1" and hd_res_64_dir.strip() != "1": # print "%s该目录不存在64的资源目录"%version # sys.exit(1) versionCheck() backupRes() with cd(remoteTempDir): run("cp -r %s %s/"%(version,wwwDir)) if zipDiff: calZipFile() with cd(remoteTempDir): #run("cp -r %s %s/"%(version,wwwDir)) if updateType in ["appstore64"]: run("cp -r appstore64/version.lua %s/appstore64/"%wwwDir) if updateType in ["appstore","all"]: run("cp -r appstore/version.lua %s/appstore/"%wwwDir) if updateType in ["jailbreak","all"]: run("cp -r jailbreak/version.lua %s/jailbreak/"%wwwDir) run("if [ -f %s/version.lua ];then cp jailbreak/version.lua %s/version.lua;fi"%(wwwDir,wwwDir)) local("rm -rf /app/online/%s/frontend/%s/%s"%(game,language,version))
def scriptDeploy(sshObj,ip,server): ''' 更新脚本的md5比对,如果跟本地的不一致则重新上传 判断更新操作目录是否存在,如果存在则不再进行更新 ''' localmd5 = common.calMd5(updateScriptPath + "/" + updateScript) status,out,err = sshObj.cmd("if [ ! -d %s ];then mkdir -p %s;fi"%(remoteLogDir,remoteLogDir)) if status != 0: state.errorResult[server] = "创建工作目录失败" + err else: status,remotemd5,stderr = sshObj.cmd("if [ -f %s/%s ];then md5sum %s/%s ;fi"%(remoteShellPath,updateScript,remoteShellPath,updateScript)) if status != 0: state.errorResult[server] = stderr else: if localmd5.strip() != remotemd5.strip(): try: sshObj.put(updateScriptPath + "/" + updateScript,remote_path=remoteShellPath) except Exception,e: state.errorResult[server] = str(e) status,out,err = sshObj.cmd("if [ -d /app/opbin/update/%s/%s ];then echo 1;else echo 0;fi"%(state.options.game,remoteWorkDir)) if status != 0 or out == 1: state.errorResult[server] = "/app/opbin/update/%s/%s目录已经存在"%(state.options.game,remoteWorkDir)
def resCopyToOnline(): #获取在线资源目录中,需要将差异文件放入其中的目录 localDir = os.path.abspath(os.path.dirname(__file__)) scriptMd5 = cmd("if [ -f /app/opbin/workspace/get_update_dir.py ];then md5sum /app/opbin/workspace/get_update_dir.py |awk '{print $1}';fi") localScriptMd5 = common.calMd5(localDir + "/get_update_dir.py") if scriptMd5 != localScriptMd5: sshobj.put(localDir + "/get_update_dir.py",remote_path="/app/opbin/workspace/") oldDirs = json.loads(cmd("python /app/opbin/workspace/get_update_dir.py '%s' '%s' '%s'"%(onlineDir,startVersion,version))) if not oldDirs["result"]: raise Exception(oldDirs["msg"]) oldDirsList = oldDirs["dir"] #将测试环境中最新的版本资源目录复制到线上环境 cmd("cp -r %s/%s %s/"%(onlineTestDir,version,onlineDir)) #复制最新版本到各版本的差异包到线上 if zipMode: for dir in oldDirsList: if dir == version: print "%s 版本跟需要更新的版本一致,不需要差异包"%dir continue print "开始处理%s的差异包..."%dir if hd: for t in ["res","hd_res"]: dirCheck = cmd("if [ -d %s/%s/%s ];then echo 1;else echo 0;fi"%(onlineDir,dir,t)) if dirCheck == "1": cmd("cp %s/%s/%s/%s.zip %s/%s/%s/"%(onlineTestDir,dir,t,version,onlineDir,dir,t)) cmd("cp %s/%s/%s/%s.lua %s/%s/%s/"%(onlineTestDir,dir,t,version,onlineDir,dir,t)) cmd("if [ -f %s/%s/%s/index.lua ];then cp %s/%s/%s/index.lua %s/%s/%s/"%(onlineTestDir,dir,t,onlineTestDir,dir,t,onlineDir,dir,t)) else: print "%s/%s/%s 不存在"%(onlineDir,dir,t) else: cmd("cp -r %s/%s/%s.zip %s/%s/"%(onlineTestDir,dir,version,onlineDir,dir)) cmd("cp -r %s/%s/%s.lua %s/%s/"%(onlineTestDir,dir,version,onlineDir,dir)) cmd("if [ -f %s/%s/index.lua ];then cp %s/%s/index.lua %s/%s/;fi"%(onlineTestDir,dir,onlineTestDir,dir,onlineDir,dir)) #将version.lua文件更新到线上 if updateType in ["appstore","all"]: cmd("cp %s/appstore/version.lua %s/appstore/"%(onlineTestDir,onlineDir)) if updateType in ["jailbreak","all"]: cmd("cp %s/jailbreak/version.lua %s/jailbreak/"%(onlineTestDir,onlineDir))
def resCopyToOnline(): #获取在线资源目录中,需要将差异文件放入其中的目录 localDir = os.path.abspath(os.path.dirname(__file__)) scriptMd5 = cmd("if [ -f /app/opbin/workspace/get_update_dir.py ];then md5sum /app/opbin/workspace/get_update_dir.py |awk '{print $1}';fi") localScriptMd5 = common.calMd5(localDir + "/get_update_dir.py") if scriptMd5 != localScriptMd5: sshobj.put(localDir + "/get_update_dir.py",remote_path="/app/opbin/workspace/") #将测试环境中最新的版本资源目录复制到线上环境 if keepBinaryFile: cmd("cp -r %s/%s %s/"%(onlineTestDir,version,onlineDir)) #复制最新版本到各版本的差异包到线上 if zipMode: set_update_type = 'appstore' #已无实际意义,加上只是为了保持兼容性 oldDirs = json.loads(cmd("python /app/opbin/workspace/get_update_dir.py '%s' '%s' '%s' '%s' '%s'"%(onlineDir,startVersion,version,set_update_type,hd))) if not oldDirs["result"]: raise Exception(oldDirs["msg"]) oldDirsList = oldDirs["dir"] for res_type in ["res","res_30lv"]: for dir in oldDirsList: if dir == version and res_type == "res": print "%s 版本跟需要更新的版本一致,不需要差异包"%dir sys.stdout.flush() continue if res_type == "res": zipname = version.strip() elif res_type == "res_30lv": zipname = version.strip() + "_30lv" else: print "res_type:%s not sruport!"%res_type sys.exit(1) print "开始处理%s的差异包%s..."%(dir,zipname) sys.stdout.flush() if hd: for t in ["res","hd_res","res_64","hd_res_64"]: dirCheck = cmd("if [ -d %s/%s/%s ];then echo 1;else echo 0;fi"%(onlineDir,dir,t)) if dirCheck.strip() == "1": if res_type == "res": cmd("cp %s/%s/%s/%s.zip %s/%s/%s/"%(onlineTestDir,dir,t,zipname,onlineDir,dir,t)) cmd("cp %s/%s/%s/%s.lua %s/%s/%s/"%(onlineTestDir,dir,t,zipname,onlineDir,dir,t)) cmd("if [ -f %s/%s/%s/index.lua ];then cp %s/%s/%s/index.lua %s/%s/%s/;fi"%(onlineTestDir,dir,t,onlineTestDir,dir,t,onlineDir,dir,t)) #复制不带.zip包名的zip包 cmd("if [ -f %s/%s/%s/%s ];then cp %s/%s/%s/%s %s/%s/%s/;fi"%(onlineTestDir,dir,t,zipname, onlineTestDir,dir,t,zipname, onlineDir,dir,t)) elif res_type.strip() == "res_30lv": res_30lv_check = cmd("if [ -f %s/%s/%s/res_30lv.lua ];then echo 1;else echo 0;fi"%(onlineDir,dir,t)) if res_30lv_check.strip() == "1": cmd("cp %s/%s/%s/%s.zip %s/%s/%s/"%(onlineTestDir,dir,t,zipname,onlineDir,dir,t)) cmd("cp %s/%s/%s/%s.lua %s/%s/%s/"%(onlineTestDir,dir,t,zipname,onlineDir,dir,t)) #复制不带.zip包名的zip包 cmd("if [ -f %s/%s/%s/%s ];then cp %s/%s/%s/%s %s/%s/%s/;fi"%(onlineTestDir,dir,t,zipname, onlineTestDir,dir,t,zipname, onlineDir,dir,t)) else: print "%s/%s/%s 不存在"%(onlineDir,dir,t) sys.stdout.flush() else: if res_type == "res": cmd("cp -r %s/%s/%s.zip %s/%s/"%(onlineTestDir,dir,zipname,onlineDir,dir)) cmd("cp -r %s/%s/%s.lua %s/%s/"%(onlineTestDir,dir,zipname,onlineDir,dir)) cmd("if [ -f %s/%s/index.lua ];then cp %s/%s/index.lua %s/%s/;fi"%(onlineTestDir,dir,onlineTestDir,dir,onlineDir,dir)) #复制不带.zip包名的zip包 cmd("if [ -f %s/%s/%s ];then cp %s/%s/%s %s/%s/;fi"%(onlineTestDir,dir,zipname, onlineTestDir,dir,zipname, onlineDir,dir)) elif res_type == "res_30lv": res_30lv_check = cmd("if [ -f %s/%s/res_30lv.lua ];then echo 1;else echo 0;fi"%(onlineDir,dir)) if res_30lv_check.strip() == "1": cmd("cp -r %s/%s/%s.zip %s/%s/"%(onlineTestDir,dir,zipname,onlineDir,dir)) cmd("cp -r %s/%s/%s.lua %s/%s/"%(onlineTestDir,dir,zipname,onlineDir,dir)) #复制不带.zip包名的zip包 cmd("if [ -f %s/%s/%s ];then cp %s/%s/%s %s/%s/;fi"%(onlineTestDir,dir,zipname, onlineTestDir,dir,zipname, onlineDir,dir)) #判断是否等待资源同步完毕再更新version.lua if waitRsync: resRsyncResult() print "开始更新version.lua文件..." for each_update_type in updateTypes: print("cp -rf %s/%s %s/"%(onlineTestDir,each_update_type,onlineDir)) cmd("cp -rf %s/%s %s/"%(onlineTestDir,each_update_type,onlineDir)) #手游debug模式开关,线上一定置为0 cmd("grep 'sys_version.debug' %s/%s/version.lua;if [ $? -eq 0 ];then sed -i '/sys_version.debug/s/1/0/g' %s/%s/version.lua;fi"%(onlineDir,each_update_type,onlineDir,each_update_type)) cmd("if [ -f %s/version.lua ];then cp %s/jailbreak/version.lua %s/version.lua;fi"%(onlineDir,onlineDir,onlineDir))
def resCopyToOnline(): #获取在线资源目录中,需要将差异文件放入其中的目录 localDir = os.path.abspath(os.path.dirname(__file__)) scriptMd5 = cmd( "if [ -f /app/opbin/workspace/get_update_dir.py ];then md5sum /app/opbin/workspace/get_update_dir.py |awk '{print $1}';fi" ) localScriptMd5 = common.calMd5(localDir + "/get_update_dir.py") if scriptMd5 != localScriptMd5: sshobj.put(localDir + "/get_update_dir.py", remote_path="/app/opbin/workspace/") oldDirs = json.loads( cmd("python /app/opbin/workspace/get_update_dir.py '%s' '%s' '%s' '%s' '%s'" % (onlineDir, startVersion, version, updateType, hd))) if not oldDirs["result"]: raise Exception(oldDirs["msg"]) oldDirsList = oldDirs["dir"] #如果为appstore64,首先检查目标版本中是否存在main.lua if updateType == "appstore64": if not hd: cmd("test -f %s/%s/main.lua" % (onlineTestDir, version)) else: cmd("if [ -d %s/%s/res ];then test -f %s/%s/res/main.lua;fi" % (onlineTestDir, version, onlineTestDir, version)) cmd("if [ -d %s/%s/hd_res ];then test -f %s/%s/hd_res/main.lua;fi" % (onlineTestDir, version, onlineTestDir, version)) #将测试环境中最新的版本资源目录复制到线上环境 cmd("cp -r %s/%s %s/" % (onlineTestDir, version, onlineDir)) #复制最新版本到各版本的差异包到线上 if zipMode: for dir in oldDirsList: if dir == version: print "%s 版本跟需要更新的版本一致,不需要差异包" % dir sys.stdout.flush() continue print "开始处理%s的差异包..." % dir sys.stdout.flush() if hd: for t in ["res", "hd_res"]: dirCheck = cmd( "if [ -d %s/%s/%s ];then echo 1;else echo 0;fi" % (onlineDir, dir, t)) if dirCheck.strip() == "1": cmd("cp %s/%s/%s/%s.zip %s/%s/%s/" % (onlineTestDir, dir, t, version, onlineDir, dir, t)) cmd("cp %s/%s/%s/%s.lua %s/%s/%s/" % (onlineTestDir, dir, t, version, onlineDir, dir, t)) cmd("if [ -f %s/%s/%s/index.lua ];then cp %s/%s/%s/index.lua %s/%s/%s/;fi" % (onlineTestDir, dir, t, onlineTestDir, dir, t, onlineDir, dir, t)) else: print "%s/%s/%s 不存在" % (onlineDir, dir, t) sys.stdout.flush() else: cmd("cp -r %s/%s/%s.zip %s/%s/" % (onlineTestDir, dir, version, onlineDir, dir)) cmd("cp -r %s/%s/%s.lua %s/%s/" % (onlineTestDir, dir, version, onlineDir, dir)) cmd("if [ -f %s/%s/index.lua ];then cp %s/%s/index.lua %s/%s/;fi" % (onlineTestDir, dir, onlineTestDir, dir, onlineDir, dir)) #将version.lua文件更新到线上 if updateType in ["appstore64"]: cmd("cp %s/appstore64/version.lua %s/appstore64/" % (onlineTestDir, onlineDir)) #手游debug模式开关,线上一定置为0 cmd("grep 'sys_version.debug' %s/appstore64/version.lua;if [ $? -eq 0 ];then sed -i '/sys_version.debug/s/1/0/g' %s/appstore64/version.lua;fi" % (onlineDir, onlineDir)) if updateType in ["appstore", "all"]: cmd("cp %s/appstore/version.lua %s/appstore/" % (onlineTestDir, onlineDir)) #手游debug模式开关,线上一定置为0 cmd("grep 'sys_version.debug' %s/appstore/version.lua;if [ $? -eq 0 ];then sed -i '/sys_version.debug/s/1/0/g' %s/appstore/version.lua;fi" % (onlineDir, onlineDir)) if updateType in ["jailbreak", "all"]: cmd("cp %s/jailbreak/version.lua %s/jailbreak/" % (onlineTestDir, onlineDir)) cmd("grep 'sys_version.debug' %s/jailbreak/version.lua;if [ $? -eq 0 ];then sed -i '/sys_version.debug/s/1/0/g' %s/jailbreak/version.lua;fi" % (onlineDir, onlineDir)) cmd("if [ -f %s/version.lua ];then cp %s/jailbreak/version.lua %s/version.lua;fi" % (onlineDir, onlineDir, onlineDir))
def resCopyToOnline(): #获取在线资源目录中,需要将差异文件放入其中的目录 localDir = os.path.abspath(os.path.dirname(__file__)) scriptMd5 = cmd( "if [ -f /app/opbin/workspace/get_update_dir.py ];then md5sum /app/opbin/workspace/get_update_dir.py |awk '{print $1}';fi" ) localScriptMd5 = common.calMd5(localDir + "/get_update_dir.py") if scriptMd5 != localScriptMd5: sshobj.put(localDir + "/get_update_dir.py", remote_path="/app/opbin/workspace/") #将测试环境中最新的版本资源目录复制到线上环境 if keepBinaryFile: cmd("cp -r %s/%s %s/" % (onlineTestDir, version, onlineDir)) #复制最新版本到各版本的差异包到线上 if zipMode: set_update_type = 'appstore' #已无实际意义,加上只是为了保持兼容性 oldDirs = json.loads( cmd("python /app/opbin/workspace/get_update_dir.py '%s' '%s' '%s' '%s' '%s'" % (onlineDir, startVersion, version, set_update_type, hd))) if not oldDirs["result"]: raise Exception(oldDirs["msg"]) oldDirsList = oldDirs["dir"] for res_type in ["res", "res_30lv"]: for dir in oldDirsList: if dir == version and res_type == "res": print "%s 版本跟需要更新的版本一致,不需要差异包" % dir sys.stdout.flush() continue if res_type == "res": zipname = version.strip() elif res_type == "res_30lv": zipname = version.strip() + "_30lv" else: print "res_type:%s not sruport!" % res_type sys.exit(1) print "开始处理%s的差异包%s..." % (dir, zipname) sys.stdout.flush() if hd: for t in ["res", "hd_res", "res_64", "hd_res_64"]: dirCheck = cmd( "if [ -d %s/%s/%s ];then echo 1;else echo 0;fi" % (onlineDir, dir, t)) if dirCheck.strip() == "1": if res_type == "res": cmd("cp %s/%s/%s/%s.zip %s/%s/%s/" % (onlineTestDir, dir, t, zipname, onlineDir, dir, t)) cmd("cp %s/%s/%s/%s.lua %s/%s/%s/" % (onlineTestDir, dir, t, zipname, onlineDir, dir, t)) cmd("if [ -f %s/%s/%s/index.lua ];then cp %s/%s/%s/index.lua %s/%s/%s/;fi" % (onlineTestDir, dir, t, onlineTestDir, dir, t, onlineDir, dir, t)) #复制不带.zip包名的zip包 cmd("if [ -f %s/%s/%s/%s ];then cp %s/%s/%s/%s %s/%s/%s/;fi" % (onlineTestDir, dir, t, zipname, onlineTestDir, dir, t, zipname, onlineDir, dir, t)) elif res_type.strip() == "res_30lv": res_30lv_check = cmd( "if [ -f %s/%s/%s/res_30lv.lua ];then echo 1;else echo 0;fi" % (onlineDir, dir, t)) if res_30lv_check.strip() == "1": cmd("cp %s/%s/%s/%s.zip %s/%s/%s/" % (onlineTestDir, dir, t, zipname, onlineDir, dir, t)) cmd("cp %s/%s/%s/%s.lua %s/%s/%s/" % (onlineTestDir, dir, t, zipname, onlineDir, dir, t)) #复制不带.zip包名的zip包 cmd("if [ -f %s/%s/%s/%s ];then cp %s/%s/%s/%s %s/%s/%s/;fi" % (onlineTestDir, dir, t, zipname, onlineTestDir, dir, t, zipname, onlineDir, dir, t)) else: print "%s/%s/%s 不存在" % (onlineDir, dir, t) sys.stdout.flush() else: if res_type == "res": cmd("cp -r %s/%s/%s.zip %s/%s/" % (onlineTestDir, dir, zipname, onlineDir, dir)) cmd("cp -r %s/%s/%s.lua %s/%s/" % (onlineTestDir, dir, zipname, onlineDir, dir)) cmd("if [ -f %s/%s/index.lua ];then cp %s/%s/index.lua %s/%s/;fi" % (onlineTestDir, dir, onlineTestDir, dir, onlineDir, dir)) #复制不带.zip包名的zip包 cmd("if [ -f %s/%s/%s ];then cp %s/%s/%s %s/%s/;fi" % (onlineTestDir, dir, zipname, onlineTestDir, dir, zipname, onlineDir, dir)) elif res_type == "res_30lv": res_30lv_check = cmd( "if [ -f %s/%s/res_30lv.lua ];then echo 1;else echo 0;fi" % (onlineDir, dir)) if res_30lv_check.strip() == "1": cmd("cp -r %s/%s/%s.zip %s/%s/" % (onlineTestDir, dir, zipname, onlineDir, dir)) cmd("cp -r %s/%s/%s.lua %s/%s/" % (onlineTestDir, dir, zipname, onlineDir, dir)) #复制不带.zip包名的zip包 cmd("if [ -f %s/%s/%s ];then cp %s/%s/%s %s/%s/;fi" % (onlineTestDir, dir, zipname, onlineTestDir, dir, zipname, onlineDir, dir)) #判断是否等待资源同步完毕再更新version.lua if waitRsync: resRsyncResult() print "开始更新version.lua文件..." for each_update_type in updateTypes: print("cp -rf %s/%s %s/" % (onlineTestDir, each_update_type, onlineDir)) cmd("cp -rf %s/%s %s/" % (onlineTestDir, each_update_type, onlineDir)) #手游debug模式开关,线上一定置为0 cmd("grep 'sys_version.debug' %s/%s/version.lua;if [ $? -eq 0 ];then sed -i '/sys_version.debug/s/1/0/g' %s/%s/version.lua;fi" % (onlineDir, each_update_type, onlineDir, each_update_type)) cmd("if [ -f %s/version.lua ];then cp %s/jailbreak/version.lua %s/version.lua;fi" % (onlineDir, onlineDir, onlineDir))