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.

GenerateBuildReport.py 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #coding=UTF-8
  2. from BuildArchetypes import archetypes, getDeploymentContext
  3. from BuildDemos import demos
  4. import argparse, subprocess, cgi
  5. parser = argparse.ArgumentParser(description="Build report generator")
  6. parser.add_argument("version", type=str, help="Vaadin version that was just built")
  7. parser.add_argument("deployUrl", type=str, help="Base url of the deployment server")
  8. parser.add_argument("buildResultUrl", type=str, help="URL for the build result page")
  9. parser.add_argument("stagingRepo", type=str, help="URL for the staging repository")
  10. parser.add_argument("pluginRepo", type=str, help="URL for the maven plugin staging repository")
  11. parser.add_argument("tbapiUrl", type=str, help="URL for the TestBench API build")
  12. parser.add_argument("frameworkRevision", type=str, default="[fill in framework repository revision]", nargs="?")
  13. parser.add_argument("screenshotRevision", type=str, default="[fill in screenshot repository revision]", nargs="?")
  14. parser.add_argument("archetypeRevision", type=str, default="[fill in maven-integration repository revision]", nargs="?")
  15. parser.add_argument("mavenPluginRevision", type=str, default="[fill in maven-plugin repository revision]", nargs="?")
  16. args = parser.parse_args()
  17. content = """<html>
  18. <head></head>
  19. <body>
  20. <table>
  21. <tr><td><h2>Checks that might need a second build</h2></td></tr>
  22. <tr><td><a href="https://dev.vaadin.com/milestone?action=new">Create milestone for next release</a></td></tr>
  23. <tr><td><a href="https://dev.vaadin.com/query?status=closed&component=Core+Framework&resolution=fixed&milestone=!Vaadin {version}&col=id&col=summary&col=component&col=status&col=type&col=priority&col=milestone&order=priority">Closed fixed tickets without milestone {version}</a></td></tr>
  24. <tr><td><a href="https://dev.vaadin.com/query?status=closed&component=Core+Framework&resolution=fixed&milestone=Vaadin {version}&col=id&col=summary&col=component&col=milestone&col=status&col=type">Closed tickets with milestone {version}</a></td></tr>
  25. <tr><td><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">Pending-release tickets with milestone {version}</a></td></tr>
  26. <tr><td><a href="https://dev.vaadin.com/query?status=pending-release&milestone=">Pending-release tickets without milestone</a></td></tr>
  27. <tr><td><a href="apidiff/changes.html">API Diff</a></td></tr>
  28. <tr><td><a href="release-notes/release-notes.html">Release Notes</a></td></tr>
  29. """.format(version=args.version)
  30. try:
  31. p1 = subprocess.Popen(['find', '.', '-name', '*.java'], stdout=subprocess.PIPE)
  32. p2 = subprocess.Popen(['xargs', 'egrep', '-n', '@since ?$'], stdin=p1.stdout, stdout=subprocess.PIPE)
  33. missing = subprocess.check_output(['egrep', '-v', '/(test|tests|target)/'], stdin=p2.stdout)
  34. content += "<tr><td>Empty @since:<br>\n<pre>%s</pre></td></tr>\n" % (missing)
  35. except subprocess.CalledProcessError as e:
  36. if e.returncode == 1:
  37. content += "<tr><td>No empty @since</td></tr>\n"
  38. else:
  39. raise e
  40. content += "<tr><td>Try demos<ul>"
  41. for demo in demos:
  42. content += "<li><a href='{url}/{demoName}-{version}'>{demoName}</a></li>\n".format(url=args.deployUrl, demoName=demo, version=args.version)
  43. content += "</ul></td></tr>\n<tr><td>Try archetype demos<ul>"
  44. for archetype in archetypes:
  45. content += "<li><a href='{url}/{context}'>{demo}</a></li>\n".format(url=args.deployUrl, demo=archetype, context=getDeploymentContext(archetype, args.version))
  46. content += """</ul></td></tr>
  47. <tr><td><a href="{repoUrl}">Staging repository</a></td></tr>
  48. <tr><td><a href="{pluginRepoUrl}">Maven Plugin Staging repository</a></td></tr>
  49. <tr><td>Eclipse Ivy Settings:<br><pre>""".format(repoUrl=args.stagingRepo, pluginRepoUrl=args.pluginRepo)
  50. content += cgi.escape(""" <ibiblio name="vaadin-staging" usepoms="true" m2compatible="true"
  51. root="{repoUrl}" />""".format(repoUrl=args.stagingRepo))
  52. content += """</pre>
  53. </td></tr>
  54. <tr><td><h2>Preparations before publishing</h2></td></tr>
  55. <tr><td><a href="https://dev.vaadin.com/milestone/Vaadin {version}">Close Trac Milestone</a></td></tr>
  56. <tr><td><a href="https://dev.vaadin.com/query?status=pending-release&component=Core+Framework&resolution=fixed&col=id&col=summary&col=component&col=milestone&col=status&col=type">Verify pending release tickets still have milestone {version}</a></td></tr>
  57. <tr><td><a href="https://dev.vaadin.com/admin/ticket/versions">Add version {version} to Trac</td></tr>
  58. <tr><td><a href="{url}">Result page (See test results, pin and tag build and dependencies)</a></td></tr>
  59. <tr><td>Commands to tag all repositories (warning: do not run as a single script but set variables and check before any push commands - this has not been tested yet and the change IDs are missing)</td></tr>
  60. <tr><td><pre>
  61. GERRIT_USER=[fill in your gerrit username]
  62. VERSION={version}
  63. FRAMEWORK_REVISION={frameworkRevision}
  64. SCREENSHOTS_REVISION={screenshotRevision}
  65. ARCHETYPES_REVISION={archetypeRevision}
  66. PLUGIN_REVISION={mavenPluginRevision}
  67. git clone ssh://$GERRIT_USER@dev.vaadin.com:29418/vaadin
  68. cd vaadin
  69. git tag -a -m"$VERSION" $VERSION $FRAMEWORK_REVISION
  70. git push --tags
  71. cd ..
  72. git clone ssh://$GERRIT_USER@dev.vaadin.com:29418/vaadin-screenshots
  73. cd vaadin-screenshots
  74. git tag -a -m"$VERSION" $VERSION $SCREENSHOTS_REVISION
  75. git push --tags
  76. cd ..
  77. git clone ssh://$GERRIT_USER@dev.vaadin.com:29418/maven-integration
  78. cd maven-integration
  79. git tag -a -m"$VERSION" $VERSION $ARCHETYPES_REVISION
  80. git push --tags
  81. cd ..
  82. git clone ssh://$GERRIT_USER@dev.vaadin.com:29418/maven-plugin
  83. cd maven-plugin
  84. git tag -a -m"$VERSION" $VERSION $PLUGIN_REVISION
  85. git push --tags
  86. cd ..
  87. </pre></td></tr>
  88. <tr><td><a href="{tbapi}">Build and publish TestBench API for version {version} if proceeding</a></td></tr>
  89. </table>
  90. </body>
  91. </html>""".format(url=args.buildResultUrl, repoUrl=args.stagingRepo, version=args.version, tbapi=args.tbapiUrl, frameworkRevision=args.frameworkRevision, screenshotRevision=args.screenshotRevision, archetypeRevision=args.archetypeRevision, mavenPluginRevision=args.mavenPluginRevision)
  92. f = open("result/report.html", 'w')
  93. f.write(content)