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.

BuildDemos.py 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #coding=UTF-8
  2. # See BuildArchetypes for details on environment
  3. # BuildDemos needs git in PATH and depends on gitpython library
  4. # gitpython can be installed with python installer script "pip":
  5. # pip install gitpython
  6. #
  7. # Deployment dependency: requests
  8. # pip install requests
  9. # Deploy depends on .deployUrl and .deployCredentials files in home folder
  10. import sys, os
  11. from os.path import join, isfile
  12. from fnmatch import fnmatch
  13. from xml.etree.ElementTree import ElementTree
  14. # Validated demos. name -> git url
  15. demos = {
  16. "dashboard" : "https://github.com/vaadin/dashboard-demo.git",
  17. "parking" : "https://github.com/vaadin/parking-demo.git",
  18. "addressbook" : "https://github.com/vaadin/addressbook.git",
  19. "grid-gwt" : "https://github.com/vaadin/grid-gwt.git"
  20. }
  21. def checkout(folder, url):
  22. Repo.clone_from(url, join(resultPath, folder))
  23. if __name__ == "__main__":
  24. # Do imports.
  25. try:
  26. from git import Repo
  27. except:
  28. print("BuildDemos depends on gitpython. Install it with `pip install gitpython`")
  29. sys.exit(1)
  30. from BuildHelpers import updateRepositories, mavenValidate, copyWarFiles, getLogFile, removeDir, getArgs, mavenInstall, resultPath, readPomFile
  31. from DeployHelpers import deployWar
  32. if hasattr(getArgs(), "artifactPath") and getArgs().artifactPath is not None:
  33. version = False
  34. basePath = getArgs().artifactPath
  35. poms = []
  36. for root, dirs, files in os.walk(basePath):
  37. for name in files:
  38. if fnmatch(name, "*.pom"):
  39. poms.append(join(root, name))
  40. for pom in poms:
  41. jarFile = pom.replace(".pom", ".jar")
  42. if isfile(jarFile):
  43. mavenInstall(pom, jarFile)
  44. else:
  45. mavenInstall(pom)
  46. if "vaadin-server" in pom:
  47. pomXml, nameSpace = readPomFile(pom)
  48. for version in pomXml.getroot().findall("./{%s}version" % (nameSpace)):
  49. getArgs().version = version.text
  50. demosFailed = False
  51. for demo in demos:
  52. print("Validating demo %s" % (demo))
  53. try:
  54. checkout(demo, demos[demo])
  55. updateRepositories(demo)
  56. mavenValidate(demo, logFile=getLogFile(demo))
  57. resultWars = copyWarFiles(demo)
  58. for war in resultWars:
  59. try:
  60. deployWar(war)
  61. except Exception as e:
  62. print("War %s failed to deploy: %s" % (war, e))
  63. demosFailed = True
  64. print("%s demo validation succeeded!" % (demo))
  65. except Exception as e:
  66. print("%s demo validation failed: %s" % (demo, e))
  67. demosFailed = True
  68. removeDir(demo)
  69. print("")
  70. if demosFailed:
  71. sys.exit(1)