9 parser = argparse.ArgumentParser()
10 parser.add_argument("project", help="project")
11 parser.add_argument("-c", "--conf", help="Config file")
12 parser.add_argument("-d", "--dependencies",
13 help=("Project dependencies\n\n"
14 "A comma-seperated (no spaces) list of projects "
15 "your project depends on. "
16 "This is used to create an integration job that "
17 "will trigger when a dependent project-merge "
18 "job is built successfully.\n\n"
19 "Example: aaa,controller,yangtools"))
20 parser.add_argument("-t", "--templates", help="Job templates to use")
21 parser.add_argument("-s", "--streams",
22 help="Release streams to fill with default options")
23 parser.add_argument("-p", "--pom", help="Path to pom.xml to use in Maven "
24 "build (Default: pom.xml")
25 parser.add_argument("-g", "--mvn-goals", help="Maven Goals")
26 parser.add_argument("-o", "--mvn-opts", help="Maven Options")
27 parser.add_argument("-a", "--archive-artifacts",
28 help="Comma-seperated list of patterns of artifacts "
29 "to archive on build completion. "
30 "See: http://ant.apache.org/manual/Types/fileset.html") # noqa
31 parser.add_argument("-r", "--autorelease", action="store_true",
32 help="Enable the validate-autorelease job, you "
33 "should enable this if your project is part of "
34 "the simultanious release.")
35 return parser.parse_args()
38 STREAM_DEFAULTS = collections.OrderedDict([
39 ("beryllium", {"branch": "master", "jdks": "openjdk8"}),
40 ("stable-lithium", {"branch": "stable/lithium", "jdks": "openjdk7"}),
41 ("stable-helium", {"branch": "stable/helium", "jdks": "openjdk7"}),
45 def create_template_config(project_dir, args):
49 cfg_data["JOB_TEMPLATES"] = args.templates
53 for stream in args.streams.split(","):
54 stream_list.append({stream: STREAM_DEFAULTS[stream]})
55 cfg_data["STREAMS"] = stream_list
58 cfg_data["POM"] = args.pom
61 cfg_data["MAVEN_GOALS"] = args.mvn_goals
64 cfg_data["MAVEN_OPTS"] = args.mvn_opts
67 cfg_data["DEPENDENCIES"] = args.dependencies
69 if args.archive_artifacts:
70 cfg_data["ARCHIVE"] = args.archive_artifacts
73 cfg_data["AUTORELEASE"] = args.autorelease
76 # Create project directory if it doesn't exist
77 if not os.path.exists(project_dir):
78 os.makedirs(project_dir)
80 print("Creating %s.cfg file" % args.project)
81 cfg_file = os.path.join(project_dir, "%s.cfg" % args.project)
83 with open(cfg_file, "w") as outstream:
84 outstream.write(yaml.dump(cfg_data, default_flow_style=False))
88 """Represents a Gerrit Project
91 path(str): The full Gerrit path to a project
92 meta_project(str): The top-level project name in Gerrit
93 project(str): The subproject name or project shortname
96 def __init__(self, project):
98 self.meta_project = None
99 self.project = project
101 if project.find('/') >= 0:
102 s = project.rsplit('/', 1)
103 self.meta_project = s[0]