def deployServiceWork(username, passwd, localServicePath, remoteTarPath, version, host, projectName, git_url): failureTimes = 0 try: logCollector("#" * 30 + "部署任务开始" + "#" * 30) # 删除遗留的项目文件夹,并判断删除结果 logCollector("#" * 20 + "step 1:删除上次遗留的" + projectName + " 项目" + "#" * 20) rmDirCmd = "rm -rf %s/%s" % (localServicePath, projectName) (recode, result) = shellCmd(rmDirCmd) logCollector(result) if recode == 0: logCollector("." * 20 + "SUCCESS!!:DELETE THE OLD " + "." * 20) logCollector("#" * 20 + "step 2:git 克隆" + projectName + "项目包到本地" + "#" * 20) # 从gitlab把项目的工程打包下来,并判断打包是否成功 gitCloneCmd = "git clone -b %s http://readonly:readonly@%s %s/%s" % ( version, git_url, localServicePath, projectName, ) (recode, result) = shellCmd(gitCloneCmd) logCollector(result) if recode == 0: logCollector("." * 20 + "SUCCESS!!: GIT CLONE THE MODELS" + "." * 20) # 判断pom.xml文件 发布版本是否存在snatshot release 版本字样 versionTag = resoveXml("%s/%s/%s-business/pom.xml" % (localServicePath, projectName, projectName)) if not ("SNAPSHOT" in versionTag.upper() or "RELEASE" in versionTag.upper()): if version == versionTag: logCollector("#" * 20 + "setp 3:maven " + projectName + " contract 组件" + "#" * 20) # 进入项目的contract目录下先清理后deploy,并判断是否成功 inFounfationContractCmd = "%s/%s/%s-contract" % (localServicePath, projectName, projectName) os.chdir(inFounfationContractCmd) mvnCleanCmd = "mvn clean deploy" (recode, result) = shellCmd(mvnCleanCmd) logCollector(result) if recode == 0: logCollector("." * 20 + "SUCCESS!!:MVN CLEAN DEPLOY" + "." * 20) else: logCollector("." * 20 + "FAILURE!!:MVN CLEAN DEPLOY" + "." * 20) failureTimes = failureTimes + 1 # 进入项目的business目录下,打包项目,并判断是否成功 logCollector("#" * 20 + "setp 4:maven " + projectName + " business 组件" + "#" * 20) inFounfationBusinessCmd = "../../../%s/%s/%s-business" % ( localServicePath, projectName, projectName, ) os.chdir(inFounfationBusinessCmd) mvnInstallCmd = "mvn clean install -Dmaven.test.skip=true -U" (recode, result) = shellCmd(mvnInstallCmd) logCollector(result) if recode == 0: logCollector("." * 20 + "SUCCESS!!:MVN CLEAN INSTALL" + "." * 20) logCollector("#" * 20 + "step 5:上传" + projectName + "部署包到远端服务器" + "#" * 20) localPath = "target/" tarFilename = "%s-business-%s-assembly.tar.gz" % (projectName, version) shellStatus = putFileWork( accout=username, passwd=passwd, host=host, localPath=localPath, remotePath=remoteTarPath, filename=tarFilename, ) if shellStatus: logCollector("." * 20 + "SUCCESS!!:UPLOAD THE TAR PACKAGE" + "." * 20) return (0, failureTimes) else: logCollector("." * 20 + "FAILURE!!:UPLOAD THE TAR PACKAGE" + "." * 20) failureTimes = failureTimes + 1 return (1, failureTimes) else: logCollector("." * 20 + "FAILURE!!:MVN CLEAN INSTALL" + "." * 20) failureTimes = failureTimes + 1 return (1, failureTimes) else: logCollector( "." * 20 + "FAILURE!!:THE DEPLOY VERSION:%s != THE POM.xml VERSION:%s " % (version, versionTag) + "." * 20 ) failureTimes = failureTimes + 1 return (1, failureTimes) else: logCollector( "." * 20 + "FAILURE!!:PLEASE CHECK THE POM.xml FILE(have the %s) " % versionTag + "." * 20 ) failureTimes = failureTimes + 1 return (1, failureTimes) else: logCollector("." * 20 + "FAILURE!!: GIT CLONE THE MODELS" + "." * 20) failureTimes = failureTimes + 1 return (1, failureTimes) else: logCollector("." * 20 + "FAILURE!!:DELETE THE OLD " + "." * 20) failureTimes = failureTimes + 1 return (1, failureTimes) except subprocess.CalledProcessError, msg: logCollector(str(msg)) logCollector("#" * 20 + "部署任务出现异常" + "#" * 20) failureTimes = failureTimes + 1 return (1, failureTimes)
def deployWebWork(username, passwd, localServicePath, remoteTarPath, version, host, projectName, git_url): failureTimes = 0 try: logCollector("#" * 30 + "部署任务开始" + "#" * 30) # 删除遗留的项目文件夹,并判断删除结果 logCollector("#" * 20 + "step 1:删除上次遗留的" + projectName + " 项目" + "#" * 20) rmDirCmd = "rm -rf %s/%s" % (localServicePath, projectName) (recode, result) = shellCmd(rmDirCmd) logCollector(result) # 如果删除ok,开始git 工程包到本地 if recode == 0: logCollector("." * 20 + "SUCCESS!!:DELETE THE OLD " + "." * 20) logCollector("#" * 20 + "step 2:git 克隆" + projectName + "项目包到本地" + "#" * 20) gitCloneCmd = "git clone -b %s http://readonly:readonly@%s %s/%s" % ( version, git_url, localServicePath, projectName, ) # print gitCloneCmd (recode, result) = shellCmd(gitCloneCmd) logCollector(result) # 如果git ok,进入到 项目目录,判断pom文件时候符合要求, if recode == 0: logCollector("." * 20 + "SUCCESS!!: GIT CLONE THE MODELS" + "." * 20) logCollector("#" * 20 + "setp 3:maven " + projectName + "组件" + "#" * 20) inFounfationBusinessCmd = "%s/%s/" % (localServicePath, projectName) os.chdir(inFounfationBusinessCmd) versionTag = resoveXml("pom.xml") # 如果pom文件符合要求,开始maven if not ("SNAPSHOT" in versionTag.upper() or "RELEASE" in versionTag.upper()): if versionTag == version: mvnInstallCmd = "mvn clean install -Dmaven.test.skip=true -U" (recode, result) = shellCmd(mvnInstallCmd) logCollector(result) # 如果maven成功,开始上传到远程服务器 if recode == 0: logCollector("." * 20 + "SUCCESS!!:MVN CLEAN INSTALL" + "." * 20) logCollector("#" * 20 + "step 5:上传" + projectName + "部署包到远端服务器" + "#" * 20) localPath = "target/" tarFilename = "%s-%s.war" % (projectName, version) shellStatus = putFileWork( accout=username, passwd=passwd, host=host, localPath=localPath, remotePath=remoteTarPath, filename=tarFilename, ) if shellStatus: logCollector("." * 20 + "SUCCESS!!:UPLOAD THE TAR PACKAGE" + "." * 20) return (0, failureTimes) else: logCollector("." * 20 + "FAILURE!!:UPLOAD THE TAR PACKAGE" + "." * 20) failureTimes = failureTimes + 1 return (1, failureTimes) else: logCollector("." * 20 + "FAILURE!!:MVN CLEAN INSTALL" + "." * 20) failureTimes = failureTimes + 1 return (1, failureTimes) else: logCollector( "." * 20 + "FAILURE!!:THE DEPLOY VERSION:%s != THE POM.xml VERSION:%s " % (version, versionTag) + "." * 20 ) failureTimes = failureTimes + 1 return (1, failureTimes) else: logCollector( "." * 20 + "FAILURE!!:PLEASE CHECK THE POM.xml FILE(have the %s) " % versionTag + "." * 20 ) failureTimes = failureTimes + 1 return (1, failureTimes) else: logCollector("." * 20 + "FAILURE!!: GIT CLONE THE MODELS" + "." * 20) failureTimes = failureTimes + 1 return (1, failureTimes) else: logCollector("." * 20 + "FAILURE!!:DELETE THE OLD " + "." * 20) failureTimes = failureTimes + 1 return (1, failureTimes) except subprocess.CalledProcessError, msg: logCollector(str(msg)) logCollector("#" * 20 + "部署任务出现异常" + "#" * 20) failureTimes = failureTimes + 1 return (1, failureTimes)