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.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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 createTableRow(*columns):
  13. html = "<tr>"
  14. for column in columns:
  15. html += "<td>" + column + "</td>"
  16. return html + "</tr>"
  17. traffic_light = "<svg width=\"20px\" height=\"20px\" style=\"padding-right:5px\"><circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"{color}\"/></svg>"
  18. content = "<html><head></head><body><table>"
  19. # Batch update tickets in trac
  20. content += createTableRow("", "<a href=\"https://dev.vaadin.com/query?status=pending-release&component=Core+Framework&resolution=fixed&milestone=Vaadin {version}&col=id&col=summary&col=component&col=milestone&col=status&col=type\">Batch update tickets in Trac</a>")
  21. # Create milestone for next release
  22. content += createTableRow("", "<a href=\"https://dev.vaadin.com/milestone?action=new\">Create milestone for next release</a>")
  23. # Tag and pin build
  24. content += createTableRow("", "<a href=\"{url}\">Tag and pin build</a>".format(url=buildResultUrl))
  25. # Traffic light for archetype metadata
  26. archetypeMetadataUrl = ""
  27. if not prerelease:
  28. archetypeMetadataUrl = "http://vaadin.com/download/maven-archetypes.xml"
  29. else:
  30. archetypeMetadataUrl ="http://vaadin.com/download/maven-archetypes-prerelease.xml"
  31. archetype_metadata_request = requests.get(archetypeMetadataUrl)
  32. if archetype_metadata_request.status_code != 200:
  33. content += createTableRow(traffic_light.format(color="black"), "<a href='{url}'>Check archetype metadata: unable to retrieve metadata</a>".format(url=archetypeMetadataUrl))
  34. else:
  35. if "version=\"{version}\"".format(version=args.version) in archetype_metadata_request.content:
  36. content += createTableRow(traffic_light.format(color="green"), "<a href='{url}'>Check archetype metadata: metadata is correct</a>".format(url=archetypeMetadataUrl))
  37. else:
  38. content += createTableRow(traffic_light.format(color="red"), "<a href='{url}'>Check archetype metadata: metadata is incorrect</a>".format(url=archetypeMetadataUrl))
  39. # TODO GitHub milestones
  40. # Inform marketing and PO
  41. content += createTableRow("", "Inform marketing and PO about the release")
  42. # Link to version update in teamcity
  43. 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))
  44. # Link to GH release notes
  45. content += createTableRow("", "<a href=\"https://github.com/vaadin/framework/releases/new\">Write release notes in GH</a>")
  46. content += "</table></body></html>"
  47. with open("result/report.html", "wb") as f:
  48. f.write(content)