Browse Source

Fix version number resolution for validation scripts

Change-Id: I799553cea50cb8e81ab06482f1a971f324da8fa1
tags/7.6.0.alpha3
Teemu Suo-Anttila 8 years ago
parent
commit
9458150556
3 changed files with 36 additions and 24 deletions
  1. 14
    13
      scripts/BuildArchetypes.py
  2. 7
    3
      scripts/BuildDemos.py
  3. 15
    8
      scripts/BuildHelpers.py

+ 14
- 13
scripts/BuildArchetypes.py View 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("")

+ 7
- 3
scripts/BuildDemos.py View 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:

+ 15
- 8
scripts/BuildHelpers.py View 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))

Loading…
Cancel
Save