]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix version number resolution for validation scripts
authorTeemu Suo-Anttila <teemusa@vaadin.com>
Wed, 8 Jul 2015 14:17:00 +0000 (17:17 +0300)
committerTeemu Suo-Anttila <teemusa@vaadin.com>
Thu, 9 Jul 2015 07:17:48 +0000 (10:17 +0300)
Change-Id: I07bde442ceb444a3732087838fab4de2de0393eb

scripts/BuildArchetypes.py
scripts/BuildDemos.py
scripts/BuildHelpers.py

index 424213457335c9a2d3100c79f4e023ccabf68ec2..1e787c25f743b8baf5d00e0c1b5d34e15d5dbae4 100644 (file)
@@ -10,8 +10,8 @@
 # python BuildArchetypes.py version fw-repo-id archetype-repo-id plugin-repo-id
 #
 
-import subprocess
-from BuildHelpers import mavenValidate, copyWarFiles, repo, getLogFile, mavenCmd, updateRepositories, getArgs, removeDir, parser, resultPath
+import subprocess, sys
+from BuildHelpers import mavenValidate, copyWarFiles, getLogFile, mavenCmd, updateRepositories, getArgs, removeDir, parser, resultPath
 from DeployHelpers import deployWar
 
 ## DEFAULT VARIABLES ##
@@ -36,9 +36,7 @@ args = None
 ## BUILDING METHODS ##
 
 # Generates and modifies a maven pom file
-def generateArchetype(archetype):
-       artifactId = "test-%s-%s" % (archetype, args.version.replace(".", "-"))
-
+def generateArchetype(archetype, artifactId):
        # Generate the required command line for archetype generation
        cmd = [mavenCmd, "archetype:generate"]
        cmd.append("-DarchetypeGroupId=%s" % (archetypeGroup))
@@ -51,41 +49,44 @@ def generateArchetype(archetype):
        cmd.append("-Dversion=1.0-SNAPSHOT")
        cmd.append("-DinteractiveMode=false")
        if hasattr(args, "maven") and args.maven is not None:
-               cmd.extends(args.maven.split(" "))
+               cmd.extend(args.maven.strip('"').split(" "))
        
        # Generate pom.xml
        print("Generating pom.xml for archetype %s" % (archetype))
        subprocess.check_call(cmd, cwd=resultPath, stdout=log)
        
-       # Return the artifactId so we know the name in the future
-       return artifactId
-
 ## DO THIS IF RUN AS A SCRIPT (not import) ##
 if __name__ == "__main__":
        # Add command line arguments for staging repos
        parser.add_argument("framework", type=int, help="Framework repo id (comvaadin-XXXX)", nargs='?')
        parser.add_argument("archetype", type=int, help="Archetype repo id (comvaadin-XXXX)", nargs='?')
        parser.add_argument("plugin", type=int, help="Maven Plugin repo id (comvaadin-XXXX)", nargs='?')
+       parser.add_argument("--repo", type=str, help="Staging repository template", required=True)
 
        archetypesFailed = False
 
        # Parse the arguments
        args = getArgs()
+
+       if hasattr(args, "artifactPath") and args.artifactPath is not None:
+               raise Exception("Archetype validation build does not support artifactPath")
+
        for archetype in archetypes:
+               artifactId = "test-%s-%s" % (archetype, args.version.replace(".", "-"))
                try:
                        log = getLogFile(archetype)
-                       artifactId = generateArchetype(archetype)
+                       generateArchetype(archetype, artifactId)
                        updateRepositories(artifactId)
                        mavenValidate(artifactId, logFile=log)  
                        warFiles = copyWarFiles(artifactId, name=archetype)
                        for war in warFiles:
                                try:
-                                       deployWar(war, "%s.war" % (archetype.split("-", 2)[2]))
+                                       deployWar(war, "%s-%s.war" % (archetype.split("-", 2)[2], args.version))
                                except Exception as e:
                                        print("War %s failed to deploy: %s" % (war, e))
                                        archetypesFailed = True
-               except:
-                       print("Archetype %s build failed" % (archetype))
+               except Exception as e:
+                       print("Archetype %s build failed" % (archetype, e))
                        archetypesFailed = True
                removeDir(artifactId)
                print("")
index 9306153b9a8975f4e34ff5e3d89b0cdfd78de55d..a13b5ac033ad15971d6a0a9e7b4a9dfa56c74b3b 100644 (file)
@@ -12,6 +12,7 @@
 import sys, os
 from os.path import join, isfile
 from fnmatch import fnmatch
+from xml.etree.ElementTree import ElementTree
 
 # Validated demos. name -> git url
 demos = {
@@ -31,11 +32,11 @@ if __name__ == "__main__":
        except:
                print("BuildDemos depends on gitpython. Install it with `pip install gitpython`")
                sys.exit(1)
-       from BuildHelpers import updateRepositories, mavenValidate, copyWarFiles, getLogFile, removeDir, getArgs, mavenInstall, resultPath
+       from BuildHelpers import updateRepositories, mavenValidate, copyWarFiles, getLogFile, removeDir, getArgs, mavenInstall, resultPath, readPomFile
        from DeployHelpers import deployWar
 
-
        if hasattr(getArgs(), "artifactPath") and getArgs().artifactPath is not None:
+               version = False
                basePath = getArgs().artifactPath
                poms = []
                for root, dirs, files in os.walk(basePath):
@@ -48,7 +49,10 @@ if __name__ == "__main__":
                                mavenInstall(pom, jarFile)
                        else:
                                mavenInstall(pom)
-       
+                       if "vaadin-server" in pom:
+                               pomXml, nameSpace = readPomFile(pom)
+                               for version in pomXml.getroot().findall("./{%s}version" % (nameSpace)):
+                                       getArgs().version = version.text
        demosFailed = False
        
        for demo in demos:
index 7068168052ca839e18a6aada469abbc848e774da..3302649c81748963ccbb04ac74ed88fd833fe2b8 100644 (file)
@@ -26,9 +26,11 @@ args = None
 
 # Default argument parser
 parser = argparse.ArgumentParser(description="Automated staging validation")
-parser.add_argument("version", type=str, help="Vaadin version to use")
+group = parser.add_mutually_exclusive_group(required=True)
+group.add_argument("--version", help="Vaadin version to use")
+group.add_argument("--artifactPath", help="Path to local folder with Vaadin artifacts")
+
 parser.add_argument("--maven", help="Additional maven command line parameters", default=None)
-parser.add_argument("--artifactPath", help="Path to local folder with Vaadin artifacts", default=None)
 
 # Parse command line arguments <version>
 def parseArgs():
@@ -99,6 +101,16 @@ def copyWarFiles(artifactId, resultDir = resultPath, name = None):
                copiedWars.append(join(resultDir, deployName))
        return copiedWars
 
+def readPomFile(pomFile):
+       # pom.xml namespace workaround
+       root = ElementTree.parse(pomFile).getroot()
+       nameSpace = root.tag[1:root.tag.index('}')]
+       print("Using namespace: %s" % (nameSpace))
+       ElementTree.register_namespace('', nameSpace)
+
+       # Read the pom.xml correctly
+       return ElementTree.parse(pomFile), nameSpace 
+
 # Recursive pom.xml update script
 def updateRepositories(path, repoIds = None, repoUrl = repo):
        # If versions are not supplied, parse arguments
@@ -108,13 +120,8 @@ def updateRepositories(path, repoIds = None, repoUrl = repo):
        # Read pom.xml
        pomXml = join(path, "pom.xml")
        if isfile(pomXml):
-               # pom.xml namespace workaround
-               root = ElementTree.parse(pomXml).getroot()
-               nameSpace = root.tag[1:root.tag.index('}')]
-               ElementTree.register_namespace('', nameSpace)
-               
                # Read the pom.xml correctly
-               tree = ElementTree.parse(pomXml)
+               tree, nameSpace = readPomFile(pomXml)
                
                # NameSpace needed for finding the repositories node
                repoNode = tree.getroot().find("{%s}repositories" % (nameSpace))