Change-Id: I0cd71e14c213d3c96a41599aaa03f33b15b797c7tags/8.0.0.alpha7
@@ -9,7 +9,7 @@ | |||
# pip install requests | |||
# Deploy depends on .deployUrl and .deployCredentials files in home folder | |||
import sys, os | |||
import sys, os, pickle | |||
from os.path import join, isfile | |||
from fnmatch import fnmatch | |||
from xml.etree.ElementTree import ElementTree | |||
@@ -23,6 +23,16 @@ demos = { | |||
# "my-demo" : ("my_demo_url_or_path", "my-demo-dev-branch") | |||
} | |||
status_dump = {"messages": []} | |||
def dump_status(error_occurred): | |||
status_dump["error"] = error_occurred | |||
pickle.dump(status_dump, open("result/demo_validation_status.pickle", "wb")) | |||
def log_status(log_string): | |||
status_dump["messages"].add(log_string) | |||
print(log_string) | |||
def checkout(folder, url, repoBranch = "master"): | |||
Repo.clone_from(url, join(resultPath, folder), branch = repoBranch) | |||
@@ -31,7 +41,8 @@ if __name__ == "__main__": | |||
try: | |||
from git import Repo | |||
except: | |||
print("BuildDemos depends on gitpython. Install it with `pip install gitpython`") | |||
log_status("BuildDemos depends on gitpython. Install it with `pip install gitpython`") | |||
dump_status(True) | |||
sys.exit(1) | |||
from BuildHelpers import updateRepositories, mavenValidate, copyWarFiles, getLogFile, removeDir, getArgs, mavenInstall, resultPath, readPomFile, parser | |||
from DeployHelpers import deployWar | |||
@@ -40,7 +51,6 @@ if __name__ == "__main__": | |||
args = getArgs() | |||
demosFailed = False | |||
ignoredDemos = args.ignore.split(",") | |||
wars = [] | |||
for demo in demos: | |||
@@ -57,13 +67,13 @@ if __name__ == "__main__": | |||
updateRepositories(join(resultPath, demo), args.pluginRepo, postfix="plugin") | |||
mavenValidate(demo, logFile=getLogFile(demo)) | |||
wars.extend(copyWarFiles(demo)) | |||
print("%s demo validation succeeded!" % (demo)) | |||
log_status("%s demo validation succeeded!" % (demo)) | |||
except Exception as e: | |||
print("%s demo validation failed: %s" % (demo, e)) | |||
log_status("%s demo validation failed: %s" % (demo, e)) | |||
if demo not in ignoredDemos: | |||
demosFailed = True | |||
except EnvironmentError as e: | |||
print("%s demo validation failed: %s" % (demo, e)) | |||
log_status("%s demo validation failed: %s" % (demo, e)) | |||
if demo not in ignoredDemos: | |||
demosFailed = True | |||
try: | |||
@@ -76,8 +86,11 @@ if __name__ == "__main__": | |||
try: | |||
deployWar(war) | |||
except Exception as e: | |||
print("War %s failed to deploy: %s" % (war, e)) | |||
log_status("War %s failed to deploy: %s" % (war, e)) | |||
demosFailed = True | |||
if demosFailed: | |||
dump_status(True) | |||
sys.exit(1) | |||
dump_status(False) |
@@ -1,5 +1,5 @@ | |||
from BuildDemos import demos | |||
import argparse, requests, json, subprocess, re | |||
import argparse, requests, json, subprocess, re, pickle | |||
parser = argparse.ArgumentParser() | |||
parser.add_argument("version", type=str, help="Vaadin version that was just built") | |||
@@ -23,6 +23,12 @@ def createTableRow(*columns): | |||
html += "<td>" + column + "</td>" | |||
return html + "</tr>" | |||
def getHtmlList(array): | |||
html = "<ul>" | |||
for item in array: | |||
html += "<li>" + item + "</li>" | |||
return html + "</ul>" | |||
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'}) | |||
@@ -47,16 +53,20 @@ def getTestStatusHtml(): | |||
else: | |||
return createTableRow(traffic_light.format(color="red"), "Test status: there are " + str(test_failures_json["count"]) + " failing tests, <a href=\"http://r2d2.devnet.vaadin.com/viewLog.html?buildId={}&buildTypeId=Vaadin80_Releases_BuildTestAndStageRelease&tab=testsInfo\">see report</a>.".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" | |||
demos_html += "<ul>" | |||
for demo in demos: | |||
demos_html += "<li><a href='{url}/{demoName}-{version}'>{demoName}</a></li>".format(url=args.deployUrl, demoName=demo, version=args.version) | |||
return demos_html + "</ul>" | |||
link_list = list(map(lambda demo: "<a href='{url}/{demoName}-{version}'>{demoName}</a>".format(url=args.deployUrl, demoName=demo, version=args.version), demos)) | |||
return demos_html + getHtmlList(link_list) | |||
def getApiDiffHtml(): | |||
apidiff_html = "Check API diff" | |||
apidiff_html += "<ul>" | |||
modules = [ | |||
"client", "client-compiler", | |||
"compatibility-client", | |||
@@ -64,9 +74,8 @@ def getApiDiffHtml(): | |||
"compatibility-shared", | |||
"server", "shared" | |||
] | |||
for module in modules: | |||
apidiff_html += "<li><a href='http://r2d2.devnet.vaadin.com/repository/download/Vaadin80_Releases_BuildTestAndStageRelease/{}:id/apidiff/{}/japicmp.html'>{}</a></li>".format(args.buildId, module, module) | |||
return apidiff_html + "</ul>" | |||
link_list = list(map(lambda module: "<li><a href='http://r2d2.devnet.vaadin.com/repository/download/Vaadin80_Releases_BuildTestAndStageRelease/{}:id/apidiff/{}/japicmp.html'>{}</a></li>".format(args.buildId, module, module), modules)) | |||
return apidiff_html + getHtmlList(link_list) | |||
def getDirs(url): | |||
page = requests.get(url) |