Projects
home:zhouxiaxiang
project_build_result
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 6
View file
build_result.py
Changed
@@ -34,13 +34,13 @@ return ret.returncode, ret.stdout, ret.stderr -def write_to_csv(csv_path, build_result_data): +def write_to_csv(file_path, build_result_data): """write build result data to csv""" if not build_result_data: - logging.warning(f"{csv_path} has nothing to write") + logging.warning(f"{file_path} has nothing to write") return - with open(csv_path, mode='w', newline="\n") as csv_file: + with open(file_path, mode='w', newline="\n") as csv_file: fieldnames = list(build_result_data[0].keys()) writer = csv.DictWriter(csv_file, fieldnames=fieldnames) writer.writeheader() @@ -56,6 +56,8 @@ self.kwargs = kwargs self.project = project self.result_xml = self.kwargs.get("result_xml", "") + self.affected_package = self.kwargs.get("affected_package", 0) + self.failed_log_ip_port = self.kwargs.get("failed_log_ip_port", "") self.published_arch_list = [] # published repository list eg: [aarch64, x86_64] self.build_result_list = [] @@ -87,6 +89,8 @@ package = pkg_result.attrib["package"] build_result = pkg_result.attrib["code"] details = "" + if build_result == "failed": + details = "please check the log" if build_result == "unresolvable": for ele in pkg_result: details = ele.text @@ -111,12 +115,29 @@ return True return False + def get_affected_package(self, package): + """get package affected package""" + # cmd = f"pkgship {package}" + # _, code, err = run(cmd) + return "" + def get_failed_unresolvable_list(self): """get failed and unresolvable package list""" failed_unresolvable_list = [] for pkg_build_result in self.build_result_list: if (pkg_build_result["build_result"] == "failed") or (pkg_build_result["build_result"] == "unresolvable"): + if self.affected_package: + affected_package = self.get_affected_package(pkg_build_result["package"]) + pkg_build_result["affected_package"] = affected_package + if self.failed_log_ip_port: + failed_log_link = "NA" + if pkg_build_result["build_result"] == "failed": + failed_log_link = f"http://{self.failed_log_ip_port}/obs_build_log/{self.project}" \ + f"/{pkg_build_result['arch']}/{pkg_build_result['package']}/" + pkg_build_result["failed_log_link"] = failed_log_link + failed_unresolvable_list.append(pkg_build_result) + return failed_unresolvable_list def check_use_for_build(self): @@ -155,11 +176,17 @@ par.add_argument("-r", "--result_xml", default="", help="obs project build result xml", required=False) par.add_argument("-w", "--write_to_csv", default=1, help="obs project build result xml", required=False) par.add_argument("-c", "--csv_path", default="", help="obs project build result write to csv path", required=False) + par.add_argument("-a", "--affected_package", default=0, + help="check the faile or unresolvable package affected package ", required=False) + par.add_argument("-l", "--failed_log_ip_port", default="", + help="failed log link ip:port, eg: xx.xx.xx.xx:82", required=False) par.add_argument("-lf", "--log_to_file", default=0, help="print log to file", required=False) args = par.parse_args() kw = { "result_xml": args.result_xml, + "affected_package": args.affected_package, + "failed_log_ip_port": args.failed_log_ip_port, } LOG_FORMAT = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.