from BuildDemos import demos
import argparse, requests, json, subprocess, re, pickle
parser = argparse.ArgumentParser()
parser.add_argument("version", type=str, help="Vaadin version that was just built")
parser.add_argument("deployUrl", type=str, help="Base url of the deployment server")
parser.add_argument("buildResultUrl", type=str, help="URL for the build result page")
parser.add_argument("teamcityUser", type=str, help="Teamcity username to use")
parser.add_argument("teamcityPassword", type=str, help="Password for given teamcity username")
parser.add_argument("teamcityUrl", type=str, help="Address to the teamcity server")
parser.add_argument("buildId", type=str, help="ID of the build to generate this report for")
parser.add_argument("frameworkRepoUrl", type=str, help="URL to the framework staging repository")
parser.add_argument("archetypeRepoUrl", type=str, help="URL to the archetype staging repository")
parser.add_argument("pluginRepoUrl", type=str, help="URL to the plugin staging repository")
args = parser.parse_args()
def createTableRow(*columns):
html = "
"
for column in columns:
html += "
" + column + "
"
return html + "
"
def getHtmlList(array):
html = "
"
for item in array:
html += "
" + item + "
"
return html + "
"
def getBuildStatusHtml():
build_steps_request_string = "http://{}/app/rest/problemOccurrences?locator=build:{}".format(args.teamcityUrl, args.buildId)
build_steps_request = requests.get(build_steps_request_string, auth=(args.teamcityUser, args.teamcityPassword), headers={'Accept':'application/json'})
if build_steps_request.status_code != 200:
return createTableRow(traffic_light.format(color="black"), "Build status: unable to retrieve status of build")
else:
build_steps_json = build_steps_request.json()
if build_steps_json["count"] == 0:
return createTableRow(traffic_light.format(color="green"), "Build status: all build steps successful")
else:
return createTableRow(traffic_light.format(color="red"), "Build status: there are failing build steps, check the build report".format(args.buildResultUrl))
def getTestStatusHtml():
test_failures_request_string = "http://{}/app/rest/testOccurrences?locator=build:{},status:FAILURE".format(args.teamcityUrl, args.buildId)
test_failures_request = requests.get(test_failures_request_string, auth=(args.teamcityUser, args.teamcityPassword), headers={'Accept':'application/json'})
if test_failures_request.status_code != 200:
return createTableRow(traffic_light.format(color="black"), "Test status: unable to retrieve status of tests")
else:
test_failures_json = test_failures_request.json()
if test_failures_json["count"] == 0:
return createTableRow(traffic_light.format(color="green"), "Test status: all tests passing")
else:
return createTableRow(traffic_light.format(color="red"), "Test status: there are " + str(test_failures_json["count"]) + " failing tests, see report.".format(args.buildId))
def getDemoValidationStatusHtml():
status = pickle.load(open("result/demo_validation_status.pickle", "rb"))
if status["error"]:
return createTableRow(traffic_light.format(color="red"), getHtmlList(status["messages"]))
else:
return createTableRow(traffic_light.format(color="green"), getHtmlList(status["messages"]))
def getDemoLinksHtml():
demos_html = "Try demos"
link_list = list(map(lambda demo: "{demoName}".format(url=args.deployUrl, demoName=demo, version=args.version), demos))
return demos_html + getHtmlList(link_list)
def getApiDiffHtml():
apidiff_html = "Check API diff"
modules = [
"client", "client-compiler",
"compatibility-client",
"compatibility-server",
"compatibility-shared",
"server", "shared"
]
link_list = list(map(lambda module: "