You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GeneratePostPublishReport.py 3.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import argparse, requests
  2. parser = argparse.ArgumentParser(description="Post-publish report generator")
  3. parser.add_argument("version", type=str, help="Vaadin version that was just built")
  4. parser.add_argument("teamcityUrl", type=str, help="Address to the teamcity server")
  5. parser.add_argument("buildTypeId", type=str, help="The ID of this build step")
  6. parser.add_argument("buildId", type=str, help="ID of the build to generate this report for")
  7. parser.add_argument("projectId", type=str, help="The ID of this project")
  8. args = parser.parse_args()
  9. buildResultUrl = "http://{}/viewLog.html?buildId={}&tab=buildResultsDiv&buildTypeId={}".format(args.teamcityUrl, args.buildId, args.buildTypeId)
  10. (major, minor, maintenance) = args.version.split(".", 2)
  11. prerelease = "." in maintenance
  12. def checkUrlStatus(url):
  13. r = requests.get(url)
  14. return r.status_code == 200
  15. def createTableRow(*columns):
  16. html = "<tr>"
  17. for column in columns:
  18. html += "<td>" + column + "</td>"
  19. return html + "</tr>"
  20. traffic_light = "<svg width=\"20px\" height=\"20px\" style=\"padding-right:5px\"><circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"{color}\"/></svg>"
  21. def getTrafficLight(b):
  22. return traffic_light.format(color="green") if b else traffic_light.format(color="red")
  23. def checkArchetypeMetaData(archetypeMetadataUrl, version):
  24. archetype_metadata_request = requests.get(archetypeMetadataUrl)
  25. if archetype_metadata_request.status_code != 200:
  26. return createTableRow(traffic_light.format(color="black"), "Check archetype metadata: <a href='{url}'>unable to retrieve metadata from {url}</a>".format(url=archetypeMetadataUrl))
  27. else:
  28. if "version=\"{version}\"".format(version=version) in archetype_metadata_request.text:
  29. return createTableRow(traffic_light.format(color="green"), "Check archetype metadata: <a href='{url}'>metadata is correct for {url}</a>".format(url=archetypeMetadataUrl))
  30. else:
  31. return createTableRow(traffic_light.format(color="red"), "Check archetype metadata: <a href='{url}'>metadata seems to be incorrect for {url}</a>".format(url=archetypeMetadataUrl))
  32. content = "<html><head></head><body><table>"
  33. tagOk = checkUrlStatus("https://github.com/vaadin/framework/releases/tag/{ver}".format(ver=args.version))
  34. content += createTableRow(getTrafficLight(tagOk), "Tag ok on github.com")
  35. # Tag and pin build
  36. content += createTableRow("", "<a href=\"{url}\">Tag and pin build</a>".format(url=buildResultUrl))
  37. # Traffic light for archetype metadata
  38. content += checkArchetypeMetaData("http://vaadin.com/download/eclipse-maven-archetypes.xml", args.version)
  39. if prerelease:
  40. content += checkArchetypeMetaData("http://vaadin.com/download/maven-archetypes-prerelease.xml", args.version)
  41. content += createTableRow("", "Optionally check that <a href=\"http://vaadin.com/download/maven-archetypes.xml\">old Eclipse metadata</a> still refers to Vaadin 7")
  42. content += createTableRow("", "Note that archetype metadata checks do not verify that the relevant sections are not commented out when changing from pre-release to stable and back!")
  43. content += createTableRow("", "Build and deploy new sampler if necessary")
  44. # Inform marketing and PO
  45. content += createTableRow("", "Inform marketing and PO about the release")
  46. # Link to version update in teamcity
  47. content += createTableRow("", "<a href=\"http://{}/admin/editProject.html?projectId={}&tab=projectParams\">Update vaadin.version.latest and vaadin.version.next parameters in TeamCity</a>".format(args.teamcityUrl, args.projectId))
  48. # Link to GH release notes
  49. content += createTableRow("", "<a href=\"https://github.com/vaadin/framework/releases\">Finish and publish release notes in GH</a>")
  50. content += "</table></body></html>"
  51. with open("result/report.html", "w") as f:
  52. f.write(content)