|
#!/usr/bin/python
# -*- encoding: utf-8 -*-
import sys
import os
import re
import time
import commands # 不要用os.system,用了的话你会很意外的*_*
# 我们有三个版本库,所以下面是三个repo。你用一个就可以了
credit = "/path/code/repo" # 本地clone代码库路径的上层目录
datahub = "/path/code/repo"
scoreweb = "/path/code/repo"
HtmlTarget = "/jenkins/url" # 我是借助jenkins新建一个目录保存html文件,访问方法:http://ip:port/html/save/path/result.html
CreateDate = time.strftime("%Y%m%d%H%M%S")
ViewURL = "http://ip:port/jenkins/" # 我保存html文件的目录为jenkins
ProjectList = []
ProjectList.append(credit)
ProjectList.append(datahub)
ProjectList.append(scoreweb)
# tmpfile = "/tmp/temp.txt" # 如果用os.system执行shell命令最好是把结果放到一个临时文件中
count = 0
def delFile(PATH):
os.chdir(PATH)
S, R = commands.getstatusoutput("find . -type f -ctime +1 | xargs rm -f")
if S == 0:
print "Delete html file 1 days ago."
else:
print "Delete file failed"
def historyHtml(PATH, project):
print "\033[34m#################\033[0m"
print "\033[34m# History #\033[0m"
print "\033[34m#################\033[0m"
for file in os.listdir(PATH):
print os.path.join(ViewURL, file)
print "\033[31m============%s END============\033[0m" % project
print ""
for projectPATH in ProjectList:
os.chdir(r"%s" % projectPATH)
item = projectPATH.split('/')[4]
gitStatus, gitResult = commands.getstatusoutput("git pull")
if gitStatus == 0:
print "\033[31m============Update Project %s Code============\033[0m" % item
print "Code update complete. %s" % gitResult
print ""
try:
simpleStatus, simpleResult = commands.getstatusoutput("gitinspector -wTHL %s" % projectPATH)
#os.system("gitinspector -wTHL %s > %s" % (projectPATH, tmpfile))
except Exception as e:
count += 1
print e
else:
if simpleStatus == 0:
print "\033[34m#################\033[0m"
print "\033[34m# Simple INFO #\033[0m"
print "\033[34m#################\033[0m"
print ""
print simpleResult
else:
count += 1
print "\033[34m#################\033[0m"
print "\033[34m# Simple INFO #\033[0m"
print "\033[34m#################\033[0m"
print ""
print simpleResult
try:
viewStatus, viewResult = commands.getstatusoutput("gitinspector --format=html --timeline --localize-output -w %s" % projectPATH)
except Exception as e:
count += 1
print e
else:
print viewStatus
if viewStatus == 0:
try:
htmlFile = open("%s/%s/%s_%s.html" % (HtmlTarget, item, item, CreateDate), 'w+')
# gitinspector生成的html文件中有一个google的jquery文件,我把它替换为本地
htmlFile.writelines(viewResult.replace("https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js", "../../gitinspector/jquery.js"))
except Exception as e:
count += 1
htmlFile.close()
print "\033[34m#################\033[0m"
print "\033[34m# View INFO #\033[0m"
print "\033[34m#################\033[0m"
print e
print ""
else:
htmlFile.close()
print "\033[34m#################\033[0m"
print "\033[34m# View INFO #\033[0m"
print "\033[34m#################\033[0m"
print "Access the following URL to view details"
print "%s%s/%s_%s.html" % (ViewURL, item, item, CreateDate)
print ""
else:
count += 1
print "Exception:"
print viewStatus
print viewResult
print ""
delFile("%s/%s" % (HtmlTarget, item))
historyHtml("%s/%s" % (HtmlTarget, item), item)
else:
print "\033[31m============Update Project %s Code============\033[0m" % item
time.sleep(2)
print "Code update failed."
print ""
sys.exit(5)
if count == 0:
sys.exit()
else:
sys.exit(126)
|
|
|