Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. "sampler" : "demos/sampler"
  21. # "my-demo" : ("my_demo_url_or_path", "my-demo-dev-branch")
  22. }
  23. def checkout(folder, url, repoBranch = "master"):
  24. Repo.clone_from(url, join(resultPath, folder), branch = repoBranch)
  25. if __name__ == "__main__":
  26. # Do imports.
  27. try:
  28. from git import Repo
  29. except:
  30. print("BuildDemos depends on gitpython. Install it with `pip install gitpython`")
  31. sys.exit(1)
  32. from BuildHelpers import updateRepositories, mavenValidate, copyWarFiles, getLogFile, removeDir, getArgs, mavenInstall, resultPath, readPomFile, parser
  33. from DeployHelpers import deployWar
  34. # Add command line argument for staging repos
  35. parser.add_argument("--repo", type=str, help="Staging repository URL", default=None)
  36. # Add command line agrument for ignoring failing demos
  37. parser.add_argument("--ignore", type=str, help="Ignored demos", default="")
  38. args = getArgs()
  39. if hasattr(args, "artifactPath") and args.artifactPath is not None:
  40. version = False
  41. basePath = args.artifactPath
  42. poms = []
  43. for root, dirs, files in os.walk(basePath):
  44. for name in files:
  45. if fnmatch(name, "*.pom"):
  46. poms.append(join(root, name))
  47. for pom in poms:
  48. jarFile = pom.replace(".pom", ".jar")
  49. if isfile(jarFile):
  50. mavenInstall(pom, jarFile)
  51. else:
  52. mavenInstall(pom)
  53. if "vaadin-server" in pom:
  54. pomXml, nameSpace = readPomFile(pom)
  55. for version in pomXml.getroot().findall("./{%s}version" % (nameSpace)):
  56. args.version = version.text
  57. demosFailed = False
  58. ignoredDemos = args.ignore.split(",")
  59. wars = []
  60. for demo in demos:
  61. print("Validating demo %s" % (demo))
  62. try:
  63. repo = demos[demo]
  64. if (isinstance(repo, tuple)):
  65. checkout(demo, repo[0], repo[1])
  66. else:
  67. checkout(demo, repo)
  68. if hasattr(args, "repo") and args.repo is not None:
  69. updateRepositories(join(resultPath, demo), args.repo)
  70. mavenValidate(demo, logFile=getLogFile(demo))
  71. wars.extend(copyWarFiles(demo))
  72. print("%s demo validation succeeded!" % (demo))
  73. except Exception as e:
  74. print("%s demo validation failed: %s" % (demo, e))
  75. if demo not in ignoredDemos:
  76. demosFailed = True
  77. except EnvironmentError as e:
  78. print("%s demo validation failed: %s" % (demo, e))
  79. if demo not in ignoredDemos:
  80. demosFailed = True
  81. try:
  82. removeDir(demo)
  83. except:
  84. pass
  85. print("")
  86. for war in wars:
  87. try:
  88. deployWar(war)
  89. except Exception as e:
  90. print("War %s failed to deploy: %s" % (war, e))
  91. demosFailed = True
  92. if demosFailed:
  93. sys.exit(1)