in buildkite/bazel-bench/bazel_bench.py [0:0]
def main(args=None):
if args is None:
args = sys.argv[1:]
parser = argparse.ArgumentParser(description="Bazel Bench CI Pipeline")
parser.add_argument("--date", type=str)
parser.add_argument("--bazel_bench_options", type=str, default="")
parser.add_argument("--bucket", type=str, default="")
parser.add_argument("--max_commits", type=int, default="")
parser.add_argument("--report_name", type=str, default="report")
parser.add_argument("--update_latest", action="store_true", default=False)
parser.add_argument("--upload_report", action="store_true", default=False)
parser.add_argument(
"--bigquery_table",
help="The BigQuery table to fetch data from. In the format: project:table_identifier.")
parsed_args = parser.parse_args(args)
date = (
datetime.datetime.strptime(parsed_args.date, "%Y-%m-%d").date()
if parsed_args.date
else datetime.date.today()
)
bazel_clone_path = bazelci.clone_git_repository(
BAZEL_REPOSITORY, STARTER_JOB_PLATFORM)
bazel_commits_full_list, bazel_commits_to_benchmark = _get_bazel_commits(
date, bazel_clone_path, parsed_args.max_commits)
bazel_bench_ci_steps = []
for project in PROJECTS:
if not project["active"]:
continue
platforms = _get_platforms(
project["bazelci_name"], whitelist=PLATFORMS_WHITELIST)
for platform in platforms:
if (project["bazel_bench_extra_options"] and platform in project["bazel_bench_extra_options"]):
project_specific_bazel_bench_options = " ".join([project["bazel_bench_extra_options"][platform], parsed_args.bazel_bench_options])
else:
project_specific_bazel_bench_options = parsed_args.bazel_bench_options
bazel_bench_ci_steps.append(
_ci_step_for_platform_and_commits(
bazel_commits_to_benchmark, platform, project,
project_specific_bazel_bench_options, date, parsed_args.bucket,
parsed_args.bigquery_table
)
)
_create_and_upload_metadata(
project_label=project["storage_subdir"],
project_source=project["git_repository"],
command=project["bazel_command"],
date=date,
platforms=platforms,
bucket=parsed_args.bucket,
all_commits=bazel_commits_full_list,
benchmarked_commits=bazel_commits_to_benchmark
)
bazel_bench_ci_steps.append("wait")
for project in PROJECTS:
if not project["active"]:
continue
# If all the above steps succeed, generate the report.
bazel_bench_ci_steps.append(
_report_generation_step(
date, project["storage_subdir"],
parsed_args.bucket, parsed_args.bigquery_table, REPORT_GENERATION_PLATFORM,
parsed_args.report_name, parsed_args.update_latest, parsed_args.upload_report))
bazelci.eprint(yaml.dump({"steps": bazel_bench_ci_steps}))
subprocess.run(
["buildkite-agent", "pipeline", "upload"],
input=yaml.dump({"steps": bazel_bench_ci_steps}, encoding="utf-8"))