diff options
author | Aleksi Hietanen <aleksi@vaadin.com> | 2016-11-03 16:56:54 +0200 |
---|---|---|
committer | Henri Sara <hesara@vaadin.com> | 2016-11-04 07:36:03 +0000 |
commit | 9e10d5d29cc091f7bab62091ebf955891ec28188 (patch) | |
tree | 90a2f1d763c51e12dca372254fe63b9cbe5e288c /scripts | |
parent | de98281e5c37598454c79c7673fb11ada13eea33 (diff) | |
download | vaadin-framework-9e10d5d29cc091f7bab62091ebf955891ec28188.tar.gz vaadin-framework-9e10d5d29cc091f7bab62091ebf955891ec28188.zip |
Add demo validation and deployment status traffic light to new build report
Change-Id: I0cd71e14c213d3c96a41599aaa03f33b15b797c7
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/BuildDemos.py | 27 | ||||
-rw-r--r-- | scripts/GenerateBuildTestAndStagingReport.py | 27 |
2 files changed, 38 insertions, 16 deletions
diff --git a/scripts/BuildDemos.py b/scripts/BuildDemos.py index 7870e743de..01fdf4d25b 100644 --- a/scripts/BuildDemos.py +++ b/scripts/BuildDemos.py @@ -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) diff --git a/scripts/GenerateBuildTestAndStagingReport.py b/scripts/GenerateBuildTestAndStagingReport.py index 32e2c9dde7..226493ee1c 100644 --- a/scripts/GenerateBuildTestAndStagingReport.py +++ b/scripts/GenerateBuildTestAndStagingReport.py @@ -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) |