#coding=UTF-8 try: import requests except Exception as e: print("GeneratePublishReportPart1 depends on requests library. Install it with `pip install requests`") sys.exit(1) import argparse, cgi, re from os.path import exists, isdir from os import makedirs metadataChecks = { 'https://vaadin.com/download/LATEST7': '^7\..*', 'https://vaadin.com/download/VERSIONS_7': '^7\..*', 'https://vaadin.com/download/release/7.7/LATEST': '^7\..*', 'https://vaadin.com/download/LATEST': '^6\..*', } parser = argparse.ArgumentParser(description="Post-publish report generator") parser.add_argument("version", type=str, help="Vaadin version that was just built") parser.add_argument("teamcityUrl", type=str, help="Address to the teamcity server") parser.add_argument("buildTypeId", type=str, help="The ID of this build step") parser.add_argument("buildId", type=str, help="ID of the build to generate this report for") args = parser.parse_args() traffic_light = "" def getTrafficLight(b): return traffic_light.format(color="green") if b else traffic_light.format(color="red") resultPath = "result" if not exists(resultPath): makedirs(resultPath) elif not isdir(resultPath): print("Result path is not a directory.") sys.exit(1) # Latest 8 checks based on current version number. (major, minor, maintenance) = args.version.split(".", 2) prerelease = "." in maintenance if prerelease: maintenance = maintenance.split('.')[0] metadataChecks['https://vaadin.com/download/PRERELEASES'] = '^{ver}' metadataChecks['https://vaadin.com/download/LATEST8'] = '^%d\.%d\..*' % (int(major), int(minor) - 1) else: metadataChecks['https://vaadin.com/download/LATEST8'] = '^{ver}' def checkUrlContents(url, regexp): r = requests.get(url) return re.match(regexp, r.text) != None def checkUrlStatus(url): r = requests.get(url) return r.status_code == 200 metadataOk = True for url in metadataChecks: pattern = metadataChecks[url].format(ver=args.version) print("Checking: %s with pattern %s" % (url, pattern)) metadataOk = metadataOk and checkUrlContents(url, pattern) tagOk = checkUrlStatus("https://github.com/vaadin/framework/releases/tag/{ver}".format(ver=args.version)) if not prerelease: downloadPageOk = checkUrlStatus("https://vaadin.com/download/release/{maj}.{min}/{ver}/".format(maj=major, min=minor, ver=args.version)) else: downloadPageOk = checkUrlStatus("https://vaadin.com/download/prerelease/{maj}.{min}/{maj}.{min}.{main}/{ver}".format(maj=major, min=minor, main=maintenance, ver=args.version)) content = """ """.format(metadataOk=getTrafficLight(metadataOk), downloadPageOk=getTrafficLight(downloadPageOk)) mavenUrl = "" if not prerelease: mavenUrl = "http://repo1.maven.org/maven2/com/vaadin/vaadin-server/" content += "".format(ver=args.version, mvnUrl=mavenUrl) else: mavenUrl = "http://maven.vaadin.com/vaadin-prereleases/com/vaadin/vaadin-server/" content += "".format(ver=args.version, mvnUrl=mavenUrl) content += "" #content += """ # #""".format(version=args.version) if not prerelease: content += '' content += "" # close GitHub milestone content += "" # release notes content += "" content += """
{metadataOk}Metadata ok on vaadin.com
{downloadPageOk}Download folder on vaadin.com contains the version
Check {ver} is published to maven.org (might take a while)
Check {ver} is published as prerelease to maven.vaadin.com
Create milestone for next version in GitHub
Verify uploaded to test.vaadin.com
Verify API version list updated
Run the generated tag_repositories.sh script
Close GitHub Milestone and create one for next version
Prepare release notes in GH

Start Post-Publish Release from dependencies tab

""".format(teamcityUrl=args.teamcityUrl, buildTypeId=args.buildTypeId, buildId=args.buildId, version=args.version) f = open("result/report.html", 'w') f.write(content)