#coding=UTF-8 from BuildArchetypes import archetypes, getDeploymentContext from BuildDemos import demos import argparse, subprocess, cgi parser = argparse.ArgumentParser(description="Build report generator") parser.add_argument("version", type=str, help="Vaadin version that was just built") parser.add_argument("deployUrl", type=str, help="Base url of the deployment server") parser.add_argument("buildResultUrl", type=str, help="URL for the build result page") parser.add_argument("stagingRepo", type=str, help="URL for the staging repository") parser.add_argument("pluginRepo", type=str, help="URL for the maven plugin staging repository") parser.add_argument("tbapiUrl", type=str, help="URL for the TestBench API build") parser.add_argument("frameworkRevision", type=str, default="[fill in framework repository revision]", nargs="?") parser.add_argument("screenshotRevision", type=str, default="[fill in screenshot repository revision]", nargs="?") parser.add_argument("archetypeRevision", type=str, default="[fill in maven-integration repository revision]", nargs="?") parser.add_argument("mavenPluginRevision", type=str, default="[fill in maven-plugin repository revision]", nargs="?") args = parser.parse_args() content = """ """.format(version=args.version) try: p1 = subprocess.Popen(['find', '.', '-name', '*.java'], stdout=subprocess.PIPE) p2 = subprocess.Popen(['xargs', 'egrep', '-n', '@since ?$'], stdin=p1.stdout, stdout=subprocess.PIPE) missing = subprocess.check_output(['egrep', '-v', '/(test|tests|target)/'], stdin=p2.stdout) content += "\n" % (missing) except subprocess.CalledProcessError as e: if e.returncode == 1: content += "\n" else: raise e content += "\n

Checks that might need a second build

Create milestone for next release
Closed fixed tickets without milestone {version}
Closed tickets with milestone {version}
Pending-release tickets with milestone {version}
Pending-release tickets without milestone
API Diff
Release Notes
Empty @since:
\n
%s
No empty @since
Try demos
    " for demo in demos: content += "
  • {demoName}
  • \n".format(url=args.deployUrl, demoName=demo, version=args.version) content += "
Try archetype demos
    " for archetype in archetypes: content += "
  • {demo}
  • \n".format(url=args.deployUrl, demo=archetype, context=getDeploymentContext(archetype, args.version)) content += """
Staging repository
Maven Plugin Staging repository
Eclipse Ivy Settings:
""".format(repoUrl=args.stagingRepo, pluginRepoUrl=args.pluginRepo)
content += cgi.escape("""	""".format(repoUrl=args.stagingRepo))
content += """

Preparations before publishing

Close Trac Milestone
Verify pending release tickets still have milestone {version}
Add version {version} to Trac
Result page (See test results, pin and tag build and dependencies)
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)
    GERRIT_USER=[fill in your gerrit username]

    VERSION={version}
    FRAMEWORK_REVISION={frameworkRevision}
    SCREENSHOTS_REVISION={screenshotRevision}
    ARCHETYPES_REVISION={archetypeRevision}
    PLUGIN_REVISION={mavenPluginRevision}
    
    git clone ssh://$GERRIT_USER@dev.vaadin.com:29418/vaadin
    cd vaadin
    git tag -a -m"$VERSION" $VERSION $FRAMEWORK_REVISION
    git push --tags
    cd ..
    
    git clone ssh://$GERRIT_USER@dev.vaadin.com:29418/vaadin-screenshots
    cd vaadin-screenshots
    git tag -a -m"$VERSION" $VERSION $SCREENSHOTS_REVISION
    git push --tags
    cd ..
    
    git clone ssh://$GERRIT_USER@dev.vaadin.com:29418/maven-integration
    cd maven-integration
    git tag -a -m"$VERSION" $VERSION $ARCHETYPES_REVISION
    git push --tags
    cd ..
    
    git clone ssh://$GERRIT_USER@dev.vaadin.com:29418/maven-plugin
    cd maven-plugin
    git tag -a -m"$VERSION" $VERSION $PLUGIN_REVISION
    git push --tags
    cd ..
    
Build and publish TestBench API for version {version} if proceeding
""".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) f = open("result/report.html", 'w') f.write(content)