summaryrefslogtreecommitdiffstats
path: root/scripts/BuildDemos.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/BuildDemos.py')
-rw-r--r--scripts/BuildDemos.py78
1 files changed, 60 insertions, 18 deletions
diff --git a/scripts/BuildDemos.py b/scripts/BuildDemos.py
index f9f2ed1b48..ac161fc517 100644
--- a/scripts/BuildDemos.py
+++ b/scripts/BuildDemos.py
@@ -4,38 +4,80 @@
# BuildDemos needs git in PATH and depends on gitpython library
# gitpython can be installed with python installer script "pip":
# pip install gitpython
+#
+# Deployment dependency: requests
+# pip install requests
+# Deploy depends on .deployUrl and .deployCredentials files in home folder
-from git import Repo
-from BuildHelpers import updateRepositories, mavenValidate, copyWarFiles, VersionObject, getLogFile, parseArgs
-
-## Example of a non-staging test.
-#version = VersionObject()
-#version.version = "7.4.8"
-
-# Uncomment lines before this, and comment following line to make a non-staging test
-version = None
+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 = {
"dashboard" : "https://github.com/vaadin/dashboard-demo.git",
"parking" : "https://github.com/vaadin/parking-demo.git",
"addressbook" : "https://github.com/vaadin/addressbook.git",
- "confirmdialog" : "https://github.com/samie/Vaadin-ConfirmDialog.git"
+ "grid-gwt" : "https://github.com/vaadin/grid-gwt.git"
}
def checkout(folder, url):
- Repo.clone_from(url, folder)
+ Repo.clone_from(url, join(resultPath, folder))
if __name__ == "__main__":
- if version is None:
- version = parseArgs()
+ # Do imports.
+ try:
+ from git import Repo
+ 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, readPomFile, parser
+ from DeployHelpers import deployWar
+
+ # Add command line arguments for staging repos
+ parser.add_argument("--repo", type=str, help="Staging repository URL", default=None)
+
+ args = getArgs()
+ if hasattr(args, "artifactPath") and args.artifactPath is not None:
+ version = False
+ basePath = args.artifactPath
+ poms = []
+ for root, dirs, files in os.walk(basePath):
+ for name in files:
+ if fnmatch(name, "*.pom"):
+ poms.append(join(root, name))
+ for pom in poms:
+ jarFile = pom.replace(".pom", ".jar")
+ if isfile(jarFile):
+ mavenInstall(pom, jarFile)
+ else:
+ mavenInstall(pom)
+ if "vaadin-server" in pom:
+ pomXml, nameSpace = readPomFile(pom)
+ for version in pomXml.getroot().findall("./{%s}version" % (nameSpace)):
+ args.version = version.text
+ demosFailed = False
+
for demo in demos:
print("Validating demo %s" % (demo))
try:
checkout(demo, demos[demo])
- updateRepositories(demo, repoIds = version)
- mavenValidate(demo, repoIds = version, logFile = getLogFile(demo))
- copyWarFiles(demo)
+ if hasattr(args, "repo") and args.repo is not None:
+ updateRepositories(join(resultPath, demo), args.repo)
+ mavenValidate(demo, logFile=getLogFile(demo))
+ resultWars = copyWarFiles(demo)
+ for war in resultWars:
+ try:
+ deployWar(war)
+ except Exception as e:
+ print("War %s failed to deploy: %s" % (war, e))
+ demosFailed = True
print("%s demo validation succeeded!" % (demo))
- except:
- print("%s demo validation failed" % (demo))
+ except Exception as e:
+ print("%s demo validation failed: %s" % (demo, e))
+ demosFailed = True
+ removeDir(demo)
print("")
+ if demosFailed:
+ sys.exit(1)