def generateDeployPlanFile(docTempdir,changeLogFile): #生成feature的更新列表 Utile.writeLog("生成feature的更新列表 "); Utile.deploymentPlan_GenerateTableAction(ConstantValue.CHANGELOG_FEATURE_TAG,ConstantValue.CHANGELOG_FEATURE_TAG_END, docTempdir+ConstantValue.DEPLOYMENT_PLAN_FILENAME,changeLogFile) #生成bugFix的更新列表 Utile.writeLog("生成bugFix的更新列表"); Utile.deploymentPlan_GenerateTableAction(ConstantValue.CHANGELOG_BUGFIX_TAG,ConstantValue.CHANGELOG_BUGFIX_TAG_END, docTempdir+ConstantValue.DEPLOYMENT_PLAN_FILENAME,changeLogFile) #生成Deployment Plan Utile.writeLog("生成Deployment Plan"); Utile.generalFile(ConstantValue.CHANGELOG_DEPLOYMENT_PLAN_TAG,ConstantValue.CHANGELOG_DEPLOYMENT_PLAN_TAG_END,changeLogFile,'temp'); Utile.generalTableFromFile("temp",'temp') Utile.insertFile(ConstantValue.CHANGELOG_DEPLOYMENT_PLAN_TAG,docTempdir+ConstantValue.DEPLOYMENT_PLAN_FILENAME,'temp'); Utile.deploymentPlan_replaceTagString(ConstantValue.RELEASE_APPLYNAME_TAG, ConstantValue.RELEASE_APPLYNAME_TAG_END, changeLogFile, docTempdir+ConstantValue.DEPLOYMENT_PLAN_FILENAME) Utile.deploymentPlan_replaceTagString(ConstantValue.RELEASE_BACKAGEGROUND_TAG, ConstantValue.RELEASE_BACKAGEGROUND_TAG_END,changeLogFile, docTempdir+ConstantValue.DEPLOYMENT_PLAN_FILENAME) Utile.deploymentPlan_replaceTagString(ConstantValue.RELEASE_DESTINATION_TAG, ConstantValue.RELEASE_DESTINATION_TAG_END, changeLogFile, docTempdir+ConstantValue.DEPLOYMENT_PLAN_FILENAME) Utile.deploymentPlan_replaceTagString(ConstantValue.RELEASE_VERSION_TAG, ConstantValue.RELEASE_VERSION_TAG_END, changeLogFile, docTempdir+ConstantValue.DEPLOYMENT_PLAN_FILENAME) os.remove('temp')
def generatePlayNowServiceStep(docTempdir, changeLogDir, changeLogFile): Utile.writeLog("生成playnow service更新步骤"); Utile.insertFile(ConstantValue.DEPLOMENT_RSTFILE_PLAYNOW_SERVICESTEP_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,changeLogDir+ConstantValue.PLAYNOW_SERVICESETP_FILENAME); Utile.generalFile(ConstantValue.CHANGELOG_PLANNOW_SERVICE_WEBCONFIG_TAG,ConstantValue.CHANGELOG_PLANNOW_SERVICE_WEBCONFIG_TAG_END,changeLogFile,'temp',True,'****'); Utile.insertFile(ConstantValue.PLAYNOWSERVICE_WEBCONFIG_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,'temp'); Utile.generalFile(ConstantValue.CHANGELOG_PLANNOW_SERVICE_APPSETTING_TAG,ConstantValue.CHANGELOG_PLANNOW_SERVICE_APPSETTING_TAG_END,changeLogFile,'temp',True,'****'); Utile.insertFile(ConstantValue.PLAYNOWSERVICE_APPSETTINGS_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,'temp');
def generatePlayNowServiceStep(docTempdir, changeLogDir, changeLogFile): Utile.writeLog("生成playnow service更新步骤") Utile.insertFile(ConstantValue.DEPLOMENT_RSTFILE_PLAYNOW_SERVICESTEP_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, changeLogDir + ConstantValue.PLAYNOW_SERVICESETP_FILENAME) Utile.generalFile( ConstantValue.CHANGELOG_PLANNOW_SERVICE_WEBCONFIG_TAG, ConstantValue.CHANGELOG_PLANNOW_SERVICE_WEBCONFIG_TAG_END, changeLogFile, 'temp', True, '****') Utile.insertFile(ConstantValue.PLAYNOWSERVICE_WEBCONFIG_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, 'temp') Utile.generalFile( ConstantValue.CHANGELOG_PLANNOW_SERVICE_APPSETTING_TAG, ConstantValue.CHANGELOG_PLANNOW_SERVICE_APPSETTING_TAG_END, changeLogFile, 'temp', True, '****') Utile.insertFile(ConstantValue.PLAYNOWSERVICE_APPSETTINGS_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, 'temp')
def generateStepFile(docTempdir,changeLogFile, changeLogDir, installPackageName): #生成部署步骤 Utile.writeLog("生成部署步骤"); tempFile='deployStepsTemp'; Utile.generalFile(ConstantValue.CHANGELOG_UPDATEAPPLICATION_TAG,ConstantValue.CHANGELOG_UPDATEAPPLICATION_TAG_END,changeLogFile,tempFile); orgF = open(tempFile,'r') steps = orgF.readlines() orgF.close(); for line in steps: if(line.strip().strip('\n').split(':')[1] == 'false'): Utile.deleteRow(docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME, ConstantValue.DEPLOYMENT_STEPS_TAG_MAPPING[line.strip().strip('\n').split(':')[0]]); del ConstantValue.DEPLOYMENT_STEPS[line.strip().strip('\n').split(':')[0]] deployStepF = open("temp",'w') for name, steps in OrderedDict(sorted(ConstantValue.DEPLOYMENT_STEPS.items(), key=lambda t: t[0])).items(): deployStepF.write(steps) deployStepF.close(); Utile.insertFile(ConstantValue.DEPLOMENT_RSTFILE_UPDATESTEP_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,"temp"); #生成数据库更新步骤文档 generateDatabaseStep(docTempdir, changeLogDir, changeLogFile) #生成playnow service更新步骤 generatePlayNowServiceStep(docTempdir, changeLogDir, changeLogFile) #生成PlayNow Managerment更新步骤 Utile.writeLog("生成PlayNow Managerment更新步骤"); Utile.insertFile(ConstantValue.DEPLOMENT_RSTFILE_PLAYNOW_MANAGERMENTSTEP_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,changeLogDir+ConstantValue.PLAYNOW_MANAGERSETP_FILENAME); Utile.generalFile(ConstantValue.CHANGELOG_PLANNOW_MANAGERMENT_WEBCONFIG_TAG,ConstantValue.CHANGELOG_PLANNOW_MANAGERMENT_WEBCONFIG_TAG_END,changeLogFile,'temp',True,'****'); Utile.insertFile(ConstantValue.PLAYNOWMANAGERMENT_WEBCONFIG_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,'temp'); #生成WebAppStore更新步骤 Utile.writeLog("生成WebAppStore更新步骤"); Utile.insertFile(ConstantValue.DEPLOMENT_RSTFILE_PLAYNOW_WEBAPPSTORESTEP_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,changeLogDir+ConstantValue.WEBAPPSTORESETPS_FILENAME); Utile.generalFile(ConstantValue.CHANGELOG_WEBAPPSTORE_WEBCONFIG_TAG,ConstantValue.CHANGELOG_WEBAPPSTORE_WEBCONFIG_TAG_END,changeLogFile,'temp',True,'****'); Utile.insertFile(ConstantValue.WEBAPPSTORE_WEBCONFIG_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,'temp'); #生成WinService更新步骤 Utile.writeLog("生成WinService更新步骤"); Utile.insertFile(ConstantValue.DEPLOMENT_RSTFILE_PLAYNOW_WINSERVICESTEP_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,changeLogDir+ConstantValue.PLAYNOW_WINSERVICESETP_FILENAME); Utile.generalFile(ConstantValue.CHANGELOG_PLANNOW_WINSERVICE_CONFIG_TAG,ConstantValue.CHANGELOG_PLANNOW_WINSERVICE_CONFIG_TAG_END,changeLogFile,'temp',True,'****'); Utile.insertFile(ConstantValue.PLAYNOWWINSERVICE_WEBCONFIG_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,'temp'); #替换包名字符串 Utile.writeLog("替换包名字符串"); Utile.replaceFileTag(ConstantValue.DEPLOMENT_RSTFILE_PLAYNOW_INSTALLPACEAGENAME_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,installPackageName); os.remove("temp") os.remove(tempFile)
def generateDatabaseStep(docTempdir, changeLogDir, changeLogFile): Utile.writeLog("生成数据库更新步骤文档"); Utile.generalFile(ConstantValue.CHANGELOG_UPDATESQL_PLAYNOW_TAG,ConstantValue.CHANGELOG_UPDATESQL_PLAYNOW_TAG_END,changeLogFile,docTempdir+ConstantValue.DATABASE_UPDATE_PLAYNOW_FILENAME); Utile.generalFile(ConstantValue.CHANGELOG_UPDATESQL_PLAYNOWLOG_TAG,ConstantValue.CHANGELOG_UPDATESQL_PLAYNOWLOG_TAG_END,changeLogFile,docTempdir+ConstantValue.DATABASE_UPDATE_PLAYNOWLOG_FILENAME); Utile.insertFile(ConstantValue.DEPLOMENT_RSTFILE_DATABASESTEP_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,changeLogDir+ConstantValue.PLAYNOW_DATEBASESETP_FILENAME); #生成数据库rollback步骤文档 Utile.writeLog("生成数据库rollback步骤文档"); Utile.generalFile(ConstantValue.CHANGELOG_ROLLBACKSQL_PLAYNOW_TAG,ConstantValue.CHANGELOG_ROLLBACKSQL_PLAYNOW_TAG_END,changeLogFile,docTempdir+ConstantValue.DATEABASE_ROLLBACK_PLAYNOW_FILENAME); Utile.generalFile(ConstantValue.CHANGELOG_ROLLBACKSQL_PLAYNOWLOG_TAG,ConstantValue.CHANGELOG_ROLLBACKSQL_PLAYNOWLOG_TAG_END,changeLogFile,docTempdir+ConstantValue.DATEABASE_ROLLBACK_PLAYNOWLOG_FILENAME); Utile.insertFile(ConstantValue.DEPLOMENT_RSTFILE_DATABASESTEP_TAG,docTempdir+ConstantValue.DEPLOYMENT_STEPS_FILENAME,changeLogDir+ConstantValue.PLAYNOW_DATEBASESETP_FILENAME); doWithSQLFile(docTempdir+ConstantValue.DATABASE_UPDATE_PLAYNOW_FILENAME) doWithSQLFile(docTempdir+ConstantValue.DATEABASE_ROLLBACK_PLAYNOW_FILENAME) doWithSQLFile(docTempdir+ConstantValue.DATABASE_UPDATE_PLAYNOWLOG_FILENAME) doWithSQLFile(docTempdir+ConstantValue.DATEABASE_ROLLBACK_PLAYNOWLOG_FILENAME) DealWithFile.zip_dir(docTempdir+ConstantValue.DATABASE_UPDATE_DIR,docTempdir+ConstantValue.DATABASE_UPDATE_DIR+'.zip' ); DealWithFile.zip_dir(docTempdir+ConstantValue.DATABASE_ROLLBACK_DIR,docTempdir+ConstantValue.DATABASE_ROLLBACK_DIR+'.zip' );
def generateDatabaseStep(docTempdir, changeLogDir, changeLogFile): Utile.writeLog("生成数据库更新步骤文档") Utile.generalFile( ConstantValue.CHANGELOG_UPDATESQL_PLAYNOW_TAG, ConstantValue.CHANGELOG_UPDATESQL_PLAYNOW_TAG_END, changeLogFile, docTempdir + ConstantValue.DATABASE_UPDATE_PLAYNOW_FILENAME) Utile.generalFile( ConstantValue.CHANGELOG_UPDATESQL_PLAYNOWLOG_TAG, ConstantValue.CHANGELOG_UPDATESQL_PLAYNOWLOG_TAG_END, changeLogFile, docTempdir + ConstantValue.DATABASE_UPDATE_PLAYNOWLOG_FILENAME) Utile.insertFile( ConstantValue.DEPLOMENT_RSTFILE_DATABASESTEP_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, changeLogDir + ConstantValue.PLAYNOW_DATEBASESETP_FILENAME) #生成数据库rollback步骤文档 Utile.writeLog("生成数据库rollback步骤文档") Utile.generalFile( ConstantValue.CHANGELOG_ROLLBACKSQL_PLAYNOW_TAG, ConstantValue.CHANGELOG_ROLLBACKSQL_PLAYNOW_TAG_END, changeLogFile, docTempdir + ConstantValue.DATEABASE_ROLLBACK_PLAYNOW_FILENAME) Utile.generalFile( ConstantValue.CHANGELOG_ROLLBACKSQL_PLAYNOWLOG_TAG, ConstantValue.CHANGELOG_ROLLBACKSQL_PLAYNOWLOG_TAG_END, changeLogFile, docTempdir + ConstantValue.DATEABASE_ROLLBACK_PLAYNOWLOG_FILENAME) Utile.insertFile( ConstantValue.DEPLOMENT_RSTFILE_DATABASESTEP_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, changeLogDir + ConstantValue.PLAYNOW_DATEBASESETP_FILENAME) doWithSQLFile(docTempdir + ConstantValue.DATABASE_UPDATE_PLAYNOW_FILENAME) doWithSQLFile(docTempdir + ConstantValue.DATEABASE_ROLLBACK_PLAYNOW_FILENAME) doWithSQLFile(docTempdir + ConstantValue.DATABASE_UPDATE_PLAYNOWLOG_FILENAME) doWithSQLFile(docTempdir + ConstantValue.DATEABASE_ROLLBACK_PLAYNOWLOG_FILENAME) DealWithFile.zip_dir( docTempdir + ConstantValue.DATABASE_UPDATE_DIR, docTempdir + ConstantValue.DATABASE_UPDATE_DIR + '.zip') DealWithFile.zip_dir( docTempdir + ConstantValue.DATABASE_ROLLBACK_DIR, docTempdir + ConstantValue.DATABASE_ROLLBACK_DIR + '.zip')
COMMAND_COMPILE_PALNOW_DOC_BAT = WORKSPACE_DIR + '\\deploy_scripts\\CompilePlayNowDoc.bat ' + PLAYNOW_DOCMENT_TEMPLATE_DIR #html文件的生成目录 PLAYNOW_DOC_HTML_DIR = PLAYNOW_DOCMENT_TEMPLATE_DIR + "\\build\\html" #临时文件名 TEMPFILE = 'temp' Utile.writeLog("---BEGIN Generate the playnow installed package---") AVAILABLE_FILES = { '2PlayNowService': "PlayNowService", '3PlayNowManager': "PlayNowManager", '4WebAppStore': "WebAppStore", '5PlayNowWinService': "PlayNowWinService" } Utile.generalFile(ConstantValue.CHANGELOG_UPDATEAPPLICATION_TAG, ConstantValue.CHANGELOG_UPDATEAPPLICATION_TAG_END, CHANGE_LOG_FILE, TEMPFILE) orgF = open(TEMPFILE, 'r') steps = orgF.readlines() orgF.close() for line in steps: if (line.strip().strip('\n').split(':')[1] == 'false'): if AVAILABLE_FILES.has_key(line.strip().strip('\n').split(':')[0]): del AVAILABLE_FILES[line.strip().strip('\n').split(':')[0]] for name, filename in AVAILABLE_FILES.items(): DealWithFile.copyFiles(WORKSPACE_DIR + "\\" + filename, PLAYNOW_PACKAGE_DIR + "\\" + filename) Utile.writeLog("---END Generate the playnow installed package---") Utile.writeLog("---BEGIN Generate the playnow docment---") Utile.writeLog("start Generate the deployment plan doc")
#调用编译sphinx文档的bat命令 COMMAND_COMPILE_PALNOW_DOC_BAT = WORKSPACE_DIR+'\\deploy_scripts\\CompilePlayNowDoc.bat '+PLAYNOW_DOCMENT_TEMPLATE_DIR #html文件的生成目录 PLAYNOW_DOC_HTML_DIR = PLAYNOW_DOCMENT_TEMPLATE_DIR+"\\build\\html" #临时文件名 TEMPFILE='temp'; Utile.writeLog("---BEGIN Generate the playnow installed package---") AVAILABLE_FILES = {'2PlayNowService' : "PlayNowService", '3PlayNowManager' : "PlayNowManager", '4WebAppStore' : "WebAppStore", '5PlayNowWinService' : "PlayNowWinService" } Utile.generalFile(ConstantValue.CHANGELOG_UPDATEAPPLICATION_TAG,ConstantValue.CHANGELOG_UPDATEAPPLICATION_TAG_END,CHANGE_LOG_FILE,TEMPFILE); orgF = open(TEMPFILE,'r') steps = orgF.readlines() orgF.close(); for line in steps: if(line.strip().strip('\n').split(':')[1] == 'false'): if AVAILABLE_FILES.has_key(line.strip().strip('\n').split(':')[0]): del AVAILABLE_FILES[line.strip().strip('\n').split(':')[0]] for name, filename in AVAILABLE_FILES.items(): DealWithFile.copyFiles(WORKSPACE_DIR+"\\"+filename, PLAYNOW_PACKAGE_DIR+"\\"+filename) Utile.writeLog("---END Generate the playnow installed package---") Utile.writeLog("---BEGIN Generate the playnow docment---") Utile.writeLog("start Generate the deployment plan doc") GenerateDeployPlanFile.generateDeployPlanFile(PLAYNOW_DOCMENT_TEMPLATE_DIR,CHANGE_LOG_FILE) Utile.writeLog("start Generate the deployment steps doc")
def generateStepFile(docTempdir, changeLogFile, changeLogDir, installPackageName): #生成部署步骤 Utile.writeLog("生成部署步骤") tempFile = 'deployStepsTemp' Utile.generalFile(ConstantValue.CHANGELOG_UPDATEAPPLICATION_TAG, ConstantValue.CHANGELOG_UPDATEAPPLICATION_TAG_END, changeLogFile, tempFile) orgF = open(tempFile, 'r') steps = orgF.readlines() orgF.close() for line in steps: if (line.strip().strip('\n').split(':')[1] == 'false'): Utile.deleteRow( docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, ConstantValue.DEPLOYMENT_STEPS_TAG_MAPPING[line.strip().strip( '\n').split(':')[0]]) del ConstantValue.DEPLOYMENT_STEPS[line.strip().strip('\n').split( ':')[0]] deployStepF = open("temp", 'w') for name, steps in OrderedDict( sorted(ConstantValue.DEPLOYMENT_STEPS.items(), key=lambda t: t[0])).items(): deployStepF.write(steps) deployStepF.close() Utile.insertFile(ConstantValue.DEPLOMENT_RSTFILE_UPDATESTEP_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, "temp") #生成数据库更新步骤文档 generateDatabaseStep(docTempdir, changeLogDir, changeLogFile) #生成playnow service更新步骤 generatePlayNowServiceStep(docTempdir, changeLogDir, changeLogFile) #生成PlayNow Managerment更新步骤 Utile.writeLog("生成PlayNow Managerment更新步骤") Utile.insertFile( ConstantValue.DEPLOMENT_RSTFILE_PLAYNOW_MANAGERMENTSTEP_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, changeLogDir + ConstantValue.PLAYNOW_MANAGERSETP_FILENAME) Utile.generalFile( ConstantValue.CHANGELOG_PLANNOW_MANAGERMENT_WEBCONFIG_TAG, ConstantValue.CHANGELOG_PLANNOW_MANAGERMENT_WEBCONFIG_TAG_END, changeLogFile, 'temp', True, '****') Utile.insertFile(ConstantValue.PLAYNOWMANAGERMENT_WEBCONFIG_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, 'temp') #生成WebAppStore更新步骤 Utile.writeLog("生成WebAppStore更新步骤") Utile.insertFile( ConstantValue.DEPLOMENT_RSTFILE_PLAYNOW_WEBAPPSTORESTEP_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, changeLogDir + ConstantValue.WEBAPPSTORESETPS_FILENAME) Utile.generalFile(ConstantValue.CHANGELOG_WEBAPPSTORE_WEBCONFIG_TAG, ConstantValue.CHANGELOG_WEBAPPSTORE_WEBCONFIG_TAG_END, changeLogFile, 'temp', True, '****') Utile.insertFile(ConstantValue.WEBAPPSTORE_WEBCONFIG_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, 'temp') #生成WinService更新步骤 Utile.writeLog("生成WinService更新步骤") Utile.insertFile( ConstantValue.DEPLOMENT_RSTFILE_PLAYNOW_WINSERVICESTEP_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, changeLogDir + ConstantValue.PLAYNOW_WINSERVICESETP_FILENAME) Utile.generalFile( ConstantValue.CHANGELOG_PLANNOW_WINSERVICE_CONFIG_TAG, ConstantValue.CHANGELOG_PLANNOW_WINSERVICE_CONFIG_TAG_END, changeLogFile, 'temp', True, '****') Utile.insertFile(ConstantValue.PLAYNOWWINSERVICE_WEBCONFIG_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, 'temp') #替换包名字符串 Utile.writeLog("替换包名字符串") Utile.replaceFileTag( ConstantValue.DEPLOMENT_RSTFILE_PLAYNOW_INSTALLPACEAGENAME_TAG, docTempdir + ConstantValue.DEPLOYMENT_STEPS_FILENAME, installPackageName) os.remove("temp") os.remove(tempFile)