project = jjblib.Project(args.project)
if project.meta_project is not None:
project_dir = os.path.join("jjb", project.meta_project, project.project)
+ jenkins_settings = "%s-%s-settings" % (project.meta_project,
+ project.project)
else:
project_dir = os.path.join("jjb", project.project)
+ jenkins_settings = "%s-settings" % project.project
project_file = os.path.join(project_dir, "%s.yaml" % project)
dependent_jobs = ""
disabled = "true" # Always disabled unless project has dependencies
email_prefix = "[%s]" % project
+
if not args.conf:
jjblib.create_template_config(project_dir, args)
project_conf = os.path.join(project_dir, "%s.cfg" % args.project)
####################
# Handle Templates #
####################
-if cfg.get('JOB_TEMPLATES'):
- templates = cfg.get('JOB_TEMPLATES')
+if cfg.get("JOB_TEMPLATES"):
+ templates = cfg.get("JOB_TEMPLATES")
else:
- templates = "verify,merge,daily,distribution,integration,sonar"
+ templates = (
+ "verify,merge,periodic,distribution,distribution-check,integration,"
+ "sonar")
templates += ",clm" # ensure we always create a clm job for all projects
-
-###################
-# Handle Branches #
-###################
-branches = OrderedDict()
-if cfg.get('BRANCHES'):
- for branch in cfg.get('BRANCHES'):
- for b in branch:
- branches.update({b: branch[b]})
+templates += ",validate-autorelease" # Autorelease validate template
+
+##################
+# Handle Streams #
+##################
+streams = OrderedDict()
+if cfg.get("STREAMS"): # this is a list of single-key dicts
+ for stream_dict in cfg.get("STREAMS"):
+ streams.update(stream_dict)
else:
- branches.update({"master": {"jdks": "openjdk7"}})
+ streams = {"boron": jjblib.STREAM_DEFAULTS["boron"]}
-sonar_branch = list(branches.items())[0][0]
+first_stream = next(iter(streams)) # Keep master branch at top.
+sonar_branch = streams[first_stream]["branch"]
# Create YAML to list branches to create jobs for
-streams = "stream:\n"
-for branch, options in branches.items():
- streams = streams + (" - %s:\n"
- " branch: '%s'\n" %
- (branch.replace('/', '-'),
- branch))
- streams = streams + " jdk: %s\n" % options["jdks"].split(",")[0].strip() # noqa
- streams = streams + " jdks:\n"
+str_streams = "stream:\n"
+for stream, options in streams.items():
+ str_streams += (" - %s:\n"
+ " branch: '%s'\n" %
+ (stream, options["branch"]))
+ str_streams += " jdk: %s\n" % options["jdks"].split(',')[0].strip() # noqa
+ str_streams += " jdks:\n"
for jdk in options["jdks"].split(","):
- streams = streams + " - %s\n" % jdk.strip()
+ str_streams += " - %s\n" % jdk.strip()
+
+ # Disable autorelease validate job unless project is participating
+ # in autorelease, JJB does not allow flipping a boolean so we have to
+ # flip it here via not operator since the JJB configuration for disabling
+ # a Jenkins Job is "disabled: bool".
+ str_streams += " disable_autorelease: %s\n" % (not options.get(
+ "autorelease", False))
+
+ # Disable the distribution-check job unless project enables it
+ str_streams += " disable_distribution_check: %s\n" % (
+ not options.get("distribution-check", True))
###############
# Handle JDKS #
dependencies = "odlparent," + dependencies
disabled = "false"
else:
- dependencies = "odlparent" # All projects depend on odlparent
+ dependencies = None
+ if project.project != "odlparent": # Odlparent does not depend on itself
+ dependencies = "odlparent" # All other projects depend on odlparent
disabled = "false"
-email_prefix = (email_prefix + " " +
+if dependencies:
+ email_prefix = (email_prefix + " " +
" ".join(['[%s]' % d for d in dependencies.split(",")])) # noqa
-dependent_jobs = ",".join(
- ['%s-merge-{stream}' % d for d in dependencies.split(",")])
+ dependent_jobs = ",".join(
+ ['%s-merge-{stream}' % d for d in dependencies.split(",")])
############################
# Handle ARCHIVE_ARTIFACTS #
############################
-if cfg.get('ARCHIVE_ARTIFACTS'):
- archive_artifacts = cfg.get('ARCHIVE_ARTIFACTS')
- archive_artifacts = ("- archive-artifacts:\n"
- " artifacts: '%s'" % archive_artifacts)
-else:
- archive_artifacts = ""
+always_archive = "**/target/surefire-reports/*-output.txt"
+
+archive_artifacts = cfg.get('ARCHIVE_ARTIFACTS', '')
+archive_artifacts = ("- archive-artifacts:\n"
+ " artifacts: '%s, %s'" %
+ (always_archive, archive_artifacts))
##############################
# Create configuration start #
os.makedirs(project_dir)
print("project: %s\n"
- "branches: %s\n"
+ "streams: %s\n"
"goals: %s\n"
"options: %s\n"
"dependencies: %s\n"
"artifacts: %s" %
(project,
- branches,
+ str_streams,
mvn_goals,
mvn_opts,
dependencies,
for line in infile:
if not re.match("\s*#", line):
line = re.sub("JOB_TEMPLATES", job_templates_yaml, line)
- line = re.sub("PROJECT", project.project, line)
+ line = re.sub("PROJECT_SHORTNAME", project.project, line)
+ line = re.sub("PROJECT_PATH", project.path, line)
+ line = re.sub("JENKINS_SETTINGS", jenkins_settings, line)
line = re.sub("DISABLED", disabled, line)
- line = re.sub("STREAMS", streams, line)
+ line = re.sub("STREAMS", str_streams, line)
line = re.sub("POM", pom, line)
line = re.sub("MAVEN_GOALS", mvn_goals, line)
line = re.sub("MAVEN_OPTS", mvn_opts, line)