mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-14 21:16:28 +00:00

This patch refactors the generate_test_report script, namely turning it into a proper library, and pulling the script/unittests out into separate files, as is standard with most python scripts. The main purpose of this is to enable reusing the library for the new Github premerge. Reviewers: tstellar, DavidSpickett, Keenuts, lnihlen Reviewed By: DavidSpickett Pull Request: https://github.com/llvm/llvm-project/pull/133196
58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
# See https://llvm.org/LICENSE.txt for license information.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
"""Script to generate a build report for buildkite."""
|
|
|
|
import argparse
|
|
import os
|
|
import subprocess
|
|
|
|
import generate_test_report_lib
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"title", help="Title of the test report, without Markdown formatting."
|
|
)
|
|
parser.add_argument("context", help="Annotation context to write to.")
|
|
parser.add_argument("return_code", help="The build's return code.", type=int)
|
|
parser.add_argument("junit_files", help="Paths to JUnit report files.", nargs="*")
|
|
args = parser.parse_args()
|
|
|
|
# All of these are required to build a link to download the log file.
|
|
env_var_names = [
|
|
"BUILDKITE_ORGANIZATION_SLUG",
|
|
"BUILDKITE_PIPELINE_SLUG",
|
|
"BUILDKITE_BUILD_NUMBER",
|
|
"BUILDKITE_JOB_ID",
|
|
]
|
|
buildkite_info = {k: v for k, v in os.environ.items() if k in env_var_names}
|
|
if len(buildkite_info) != len(env_var_names):
|
|
buildkite_info = None
|
|
|
|
report, style = generate_test_report_lib.generate_report_from_files(
|
|
args.title, args.return_code, args.junit_files, buildkite_info
|
|
)
|
|
|
|
if report:
|
|
p = subprocess.Popen(
|
|
[
|
|
"buildkite-agent",
|
|
"annotate",
|
|
"--context",
|
|
args.context,
|
|
"--style",
|
|
style,
|
|
],
|
|
stdin=subprocess.PIPE,
|
|
stderr=subprocess.PIPE,
|
|
universal_newlines=True,
|
|
)
|
|
|
|
# The report can be larger than the buffer for command arguments so we send
|
|
# it over stdin instead.
|
|
_, err = p.communicate(input=report)
|
|
if p.returncode:
|
|
raise RuntimeError(f"Failed to send report to buildkite-agent:\n{err}")
|