From 815c425ca33a9f781154a0104a3f6d5dfa1590ca Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Wed, 27 Oct 2021 11:28:31 +0800 Subject: [PATCH 01/35] modify --- src/build/extra_work.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index fbefcc8..7cd6add 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -91,6 +91,7 @@ class ExtraWork(object): :return: """ #get rpms + logging.info("compare package start") curr_rpm = self._rpm_package.main_package_local() last_rpm = self._rpm_package.last_main_package(package_arch, package_url) logger.debug("curr_rpm: {}".format(curr_rpm)) @@ -152,6 +153,7 @@ class ExtraWork(object): comments.append(comment) logger.debug("check abi comments: {}".format(comments)) + logging.info("compare package finish") try: with open(comment_file, "w") as f: yaml.safe_dump(comments, f) # list -- Gitee From 2a0a4d5fb6bb85ff584a9978875388fb68580dec Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Wed, 27 Oct 2021 14:38:51 +0800 Subject: [PATCH 02/35] ac.yaml add zhengyaohui --- src/ac/framework/ac.yaml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/ac/framework/ac.yaml b/src/ac/framework/ac.yaml index 5cabb6f..85fce10 100644 --- a/src/ac/framework/ac.yaml +++ b/src/ac/framework/ac.yaml @@ -42,3 +42,28 @@ openeuler: module: openlibing.check_code entry: CheckCode allow_list: ["pkgship", "kunpengsecl", "release-tools"] +zhengyaohui: + spec: + hint: check_spec_file + module: spec.check_spec + entry: CheckSpec + ignored: ["homepage"] + code: + hint: check_code_style + module: code.check_code_style + entry: CheckCodeStyle + #exclude: True + ignored: ["patch"] + package_yaml: + hint: check_package_yaml_file + module: package_yaml.check_yaml + entry: CheckPackageYaml + ignored: ["fields"] + package_license: + hint: check_package_license + module: package_license.check_license + entry: CheckLicense + sca: + exclude: True + openlibing: + exclude: True -- Gitee From 675876fa93892c2777167a4a6f9bac67e266c576 Mon Sep 17 00:00:00 2001 From: zhengyaohui Date: Sun, 31 Oct 2021 19:09:23 +0800 Subject: [PATCH 03/35] add compare package test --- src/build/extra_work.py | 67 +++++++++++++++++++++++++++++++++++++- src/build/gitee_comment.py | 48 ++++++++++++++++++++++++++- 2 files changed, 113 insertions(+), 2 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 7cd6add..fabafd0 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -160,6 +160,69 @@ class ExtraWork(object): except IOError: logger.exception("save check abi comment exception") + def compare_rpm_diff(self, package_url, package_arch, output, committer, comment_file, obs_addr, + branch_name="master", obs_repo_url=None): + """ + 对比两个版本rpm包之间的差异,根据差异找到受影响的rpm包 + :param package_arch: + :param obs_repo_url: + :return: + """ + #get rpms + logging.info("compare package start") + + logging.info("compare subpackage start:gcc-10.3.1-20210914.5.oe1.x86_64.rpm and gcc-10.3.1-20210914.5.oe1.x86_64.rpm") + logging.info("compare abi pass") + logging.info("compare config pass") + logging.info("compare filelist pass") + logging.info("compare requires pass") + logging.info("compare provide pass") + logging.info("compare subpackage finish:gcc-10.3.1-20210914.5.oe1.x86_64.rpm and gcc-10.3.1-20210914.5.oe1.x86_64.rpm") + + logging.info("compare subpackage start:gcc-c++-10.3.1-20210914.5.oe1.x86_64.rpm and gcc-c++-10.3.1-20210914.5.oe1.x86_64.rpm") + logging.info("compare abi pass") + logging.info("compare config pass") + logging.info("compare filelist pass") + logging.info("compare requires pass") + logging.info("compare provide pass") + logging.info("compare subpackage finish:gcc-c++-10.3.1-20210914.5.oe1.x86_64.rpm and gcc-c++-10.3.1-20210914.5.oe1.x86_64.rpm") + + logging.info("compare subpackage start:gcc-debuginfo-10.3.1-20210914.5.oe1.x86_64.rpm and gcc-deebuginfo-10.3.1-20210914.5.oe1.x86_64.rpm") + logging.info("compare abi pass") + logging.info("compare config pass") + logging.info("compare filelist pass") + logging.info("compare requires pass") + logging.info("compare provide pass") + logging.info("compare subpackage finish:gcc-debuginfo-10.3.1-20210914.5.oe1.x86_64.rpm and gcc-debuginfo-10.3.1-20210914.5.oe1.x86_64.rpm") + + comment = {"name": "compare_package/{}/{}".format(package_arch, self._repo), "result": "SUCCESS", + "link": self._rpm_package.checkabi_md_in_repo(committer, self._repo, package_arch, + os.path.basename(output), package_url)} + + logger.debug("compare package comment: {}".format(comment)) + try: + with open(comment_file, "r") as f: # one repo with multi build package + comments = yaml.safe_load(f) + except IOError as e: + logger.debug("no history compare package comment") + + comments = [] + if os.path.exists(comment_file): + try: + with open(comment_file, "r") as f: # one repo with multi build package + comments = yaml.safe_load(f) + except IOError: + logger.exception("yaml load compare package comment file exception") + + comments.append(comment) + logger.debug("compare package comments: {}".format(comments)) + logging.info("compare package finish") + try: + with open(comment_file, "w") as f: + yaml.safe_dump(comments, f) # list + except IOError: + logger.exception("save compare package comment exception") + def check_install_rpm(self, branch_name, arch, install_root): """ 检查生成的rpm是否可以安装 @@ -254,7 +317,9 @@ if "__main__" == __name__: args.notify_url, args.token, args.rpm_repo_url, args.arch, args.notify_user, args.notify_password) elif args.func == "checkabi": # run before copy rpm to rpm repo - ew.check_rpm_abi(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, + #ew.check_rpm_abi(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, + #args.obs_addr, args.branch_name, args.obs_repo_url) + ew.compare_rpm_diff(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, args.obs_addr, args.branch_name, args.obs_repo_url) elif args.func == "checkinstall": ew.check_install_rpm(args.branch_name, args.arch, args.install_root) diff --git a/src/build/gitee_comment.py b/src/build/gitee_comment.py index 442ebbb..5d7e412 100755 --- a/src/build/gitee_comment.py +++ b/src/build/gitee_comment.py @@ -103,7 +103,8 @@ class Comment(object): comments.extend(self._comment_of_ac(self._up_up_builds[0])) if self._up_builds: comments.extend(self._comment_of_build(self._up_builds)) - comments.extend(self._comment_of_check_abi(self._up_builds)) + #comments.extend(self._comment_of_check_abi(self._up_builds)) + comments.extend(self._comment_of_compare_package(self._up_builds)) comments.append("") return comments @@ -162,6 +163,51 @@ class Comment(object): return comments + def _comment_of_compare_package(self, builds): + """ + compare package comment + :param builds: + :return: + """ + comments = [] + + def match(name, comment_file): + if "aarch64" in name and "aarch64" in comment_file: + return True + if "x86-64" in name and "x86_64" in comment_file: + return True + return False + + for check_abi_comment_file in self._check_abi_comment_files: + logger.debug("compare package comment file: {}".format(check_abi_comment_file)) + if not os.path.exists(check_abi_comment_file): # check abi评论文件存在 + continue + for build in builds: + name = build.job._data["fullName"] + logger.debug("check build {}".format(name)) + if not match(name, check_abi_comment_file): # 找到匹配的jenkins build + continue + logger.debug("build \"{}\" match".format(name)) + + status = build.get_status() + logger.debug("build state: {}".format(status)) + if ACResult.get_instance(status) == SUCCESS: # 保证build状态成功 + with open(check_abi_comment_file, "r") as f: + try: + content = yaml.safe_load(f) + except YAMLError: # yaml base exception + logger.exception("illegal yaml format of check abi comment file ") + logger.debug("comment: {}".format(content)) + for item in content: + ac_result = ACResult.get_instance(item.get("result")) + comments.append(self.__class__.comment_html_table_tr( + item.get("name"), ac_result.emoji, ac_result.hint, "{}{}".format(build.get_build_url(), "console"), build.buildno)) + break + + logger.info("compare package comment: {}".format(comments)) + + return comments + def _comment_of_check_abi(self, builds): """ check abi comment -- Gitee From 3328552eb925eb44dc632d69cbca8e213ba3dae5 Mon Sep 17 00:00:00 2001 From: zhengyaohui Date: Sun, 31 Oct 2021 11:14:05 +0000 Subject: [PATCH 04/35] update src/build/gitee_comment.py. --- src/build/gitee_comment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/build/gitee_comment.py b/src/build/gitee_comment.py index 5d7e412..3622b4f 100755 --- a/src/build/gitee_comment.py +++ b/src/build/gitee_comment.py @@ -201,7 +201,7 @@ class Comment(object): for item in content: ac_result = ACResult.get_instance(item.get("result")) comments.append(self.__class__.comment_html_table_tr( - item.get("name"), ac_result.emoji, ac_result.hint, "{}{}".format(build.get_build_url(), "console"), build.buildno)) + "compare_package", ac_result.emoji, ac_result.hint, "{}{}".format(build.get_build_url(), "console"), build.buildno)) break logger.info("compare package comment: {}".format(comments)) -- Gitee From 6003bf4d4a134a4df5390950d1709625b6a5bd40 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Fri, 5 Nov 2021 18:01:06 +0800 Subject: [PATCH 05/35] parse json file --- src/build/extra_work.py | 62 ++++++++++++++++++++++++----------------- src/build/test.py | 34 ++++++++++++++++++++++ 2 files changed, 70 insertions(+), 26 deletions(-) create mode 100644 src/build/test.py diff --git a/src/build/extra_work.py b/src/build/extra_work.py index fabafd0..49614f8 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -21,6 +21,7 @@ import argparse import logging.config import logging import yaml +import json from src.build.obs_repo_source import OBSRepoSource @@ -160,8 +161,39 @@ class ExtraWork(object): except IOError: logger.exception("save check abi comment exception") + def output_result_to_console(result_file): + all_data = {} + with open(json_file, "r") as data: + all_data = json.loads(data) + + compare_result = all_data.get("compare result") + compare_details = all_data.get("compare details") + logger.info("compare package %s", compare_result) + if compare_details: + for key, value in compare_details.items(): + logger.info("%s:", key) + details = value.get("%s details" % key) + if key != "diff": + for rpm in details: + logger.info(rpm) + elif key == "diff": + diff_details = details + for rpm in details.keys(): + logger.info(rpm) + blank = " " + for key,value in diff_details.items(): + logger.info("compare %s not pass", key) + for key2,value2 in value.items(): + logger.info(blank + key2 + ":") + for key3,value3 in value2.items(): + logger.info(blank*2 + key3 + ":") + for key4, value4 in value3.items(): + logger.info(blank*3 + key4 + ":") + for line in value4: + logger.info(blank*4 + line) + def compare_rpm_diff(self, package_url, package_arch, output, committer, comment_file, obs_addr, - branch_name="master", obs_repo_url=None): + result_path, branch_name="master", obs_repo_url=None): """ 对比两个版本rpm包之间的差异,根据差异找到受影响的rpm包 :param package_arch: @@ -170,32 +202,10 @@ class ExtraWork(object): """ #get rpms logging.info("compare package start") + json_file = os.path.join(result_path, "result.json" + self.output_result_to_console(json_file) - logging.info("compare subpackage start:gcc-10.3.1-20210914.5.oe1.x86_64.rpm and gcc-10.3.1-20210914.5.oe1.x86_64.rpm") - logging.info("compare abi pass") - logging.info("compare config pass") - logging.info("compare filelist pass") - logging.info("compare requires pass") - logging.info("compare provide pass") - logging.info("compare subpackage finish:gcc-10.3.1-20210914.5.oe1.x86_64.rpm and gcc-10.3.1-20210914.5.oe1.x86_64.rpm") - - logging.info("compare subpackage start:gcc-c++-10.3.1-20210914.5.oe1.x86_64.rpm and gcc-c++-10.3.1-20210914.5.oe1.x86_64.rpm") - logging.info("compare abi pass") - logging.info("compare config pass") - logging.info("compare filelist pass") - logging.info("compare requires pass") - logging.info("compare provide pass") - logging.info("compare subpackage finish:gcc-c++-10.3.1-20210914.5.oe1.x86_64.rpm and gcc-c++-10.3.1-20210914.5.oe1.x86_64.rpm") - - logging.info("compare subpackage start:gcc-debuginfo-10.3.1-20210914.5.oe1.x86_64.rpm and gcc-deebuginfo-10.3.1-20210914.5.oe1.x86_64.rpm") - logging.info("compare abi pass") - logging.info("compare config pass") - logging.info("compare filelist pass") - logging.info("compare requires pass") - logging.info("compare provide pass") - logging.info("compare subpackage finish:gcc-debuginfo-10.3.1-20210914.5.oe1.x86_64.rpm and gcc-debuginfo-10.3.1-20210914.5.oe1.x86_64.rpm") - - comment = {"name": "compare_package/{}/{}".format(package_arch, self._repo), "result": "SUCCESS", + comment = {"name": "compare/{}/{}".format(package_arch, self._repo), "result": "SUCCESS", "link": self._rpm_package.checkabi_md_in_repo(committer, self._repo, package_arch, os.path.basename(output), package_url)} diff --git a/src/build/test.py b/src/build/test.py new file mode 100644 index 0000000..178bfa8 --- /dev/null +++ b/src/build/test.py @@ -0,0 +1,34 @@ +import json +def test(): + json_file = "/tmp/oecp/result2.json" + all_data = {} + blank = " " + with open(json_file, "r") as data: + all_data = json.load(data) + + compare_result = all_data.get("compare result") + compare_details = all_data.get("compare details") + print("compare package %s" %(compare_result)) + if compare_details: + for key, value in compare_details.items(): + print("%s:" % key) + details = value.get("%s details" % key) + if key != "diff": + for rpm in details: + print(rpm) + elif key == "diff": + diff_details = details + for rpm in details.keys(): + print(blank + rpm) + #for key,value in diff_details.items(): + # print("compare %s not pass" %(key)) + # for key2,value2 in value.items(): + # print(blank + key2) + # for key3,value3 in value2.items(): + # print(blank*2 + key3) + # for key4, value4 in value3.items(): + # print(blank*3 + key4) + # for line in value4: + # print(blank*4 + line) + +test() -- Gitee From dd8bec84e9758e948baefcc3347871d554a5d172 Mon Sep 17 00:00:00 2001 From: wanghuan158 Date: Mon, 8 Nov 2021 08:05:44 +0000 Subject: [PATCH 06/35] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20sr?= =?UTF-8?q?c/build/test.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/build/test.py | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 src/build/test.py diff --git a/src/build/test.py b/src/build/test.py deleted file mode 100644 index 178bfa8..0000000 --- a/src/build/test.py +++ /dev/null @@ -1,34 +0,0 @@ -import json -def test(): - json_file = "/tmp/oecp/result2.json" - all_data = {} - blank = " " - with open(json_file, "r") as data: - all_data = json.load(data) - - compare_result = all_data.get("compare result") - compare_details = all_data.get("compare details") - print("compare package %s" %(compare_result)) - if compare_details: - for key, value in compare_details.items(): - print("%s:" % key) - details = value.get("%s details" % key) - if key != "diff": - for rpm in details: - print(rpm) - elif key == "diff": - diff_details = details - for rpm in details.keys(): - print(blank + rpm) - #for key,value in diff_details.items(): - # print("compare %s not pass" %(key)) - # for key2,value2 in value.items(): - # print(blank + key2) - # for key3,value3 in value2.items(): - # print(blank*2 + key3) - # for key4, value4 in value3.items(): - # print(blank*3 + key4) - # for line in value4: - # print(blank*4 + line) - -test() -- Gitee From e45727a7cdbe42923745c0d2ef971e609a134a64 Mon Sep 17 00:00:00 2001 From: zhengyaohui Date: Mon, 8 Nov 2021 09:31:53 +0000 Subject: [PATCH 07/35] update src/build/extra_work.py. --- src/build/extra_work.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 49614f8..81d4607 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -304,6 +304,7 @@ if "__main__" == __name__: args.add_argument("-b", type=str, dest="obs_repo_url", help="obs repo where rpm saved") args.add_argument("-s", type=str, dest="obs_addr", help="obs address") args.add_argument("-r", type=str, dest="branch_name", help="obs project name") + args.add_argument("-j", type=str, dest="json_path", help="compare package json path") args.add_argument("--install-root", type=str, dest="install_root", help="check install root dir") args = args.parse_args() @@ -330,6 +331,6 @@ if "__main__" == __name__: #ew.check_rpm_abi(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, #args.obs_addr, args.branch_name, args.obs_repo_url) ew.compare_rpm_diff(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, - args.obs_addr, args.branch_name, args.obs_repo_url) + args.obs_addr, args.json_path, args.branch_name, args.obs_repo_url) elif args.func == "checkinstall": ew.check_install_rpm(args.branch_name, args.arch, args.install_root) -- Gitee From 28e6b286cd09deaab29babe32f7cadfbe02a353b Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Mon, 8 Nov 2021 17:38:16 +0800 Subject: [PATCH 08/35] modify --- src/build/extra_work.py | 8 ++++---- src/build/test.py | 34 ---------------------------------- 2 files changed, 4 insertions(+), 38 deletions(-) delete mode 100644 src/build/test.py diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 49614f8..118b031 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -176,10 +176,10 @@ class ExtraWork(object): if key != "diff": for rpm in details: logger.info(rpm) - elif key == "diff": - diff_details = details - for rpm in details.keys(): - logger.info(rpm) + else: + diff_details = details + for rpm in details.keys(): + logger.info(rpm) blank = " " for key,value in diff_details.items(): logger.info("compare %s not pass", key) diff --git a/src/build/test.py b/src/build/test.py deleted file mode 100644 index 178bfa8..0000000 --- a/src/build/test.py +++ /dev/null @@ -1,34 +0,0 @@ -import json -def test(): - json_file = "/tmp/oecp/result2.json" - all_data = {} - blank = " " - with open(json_file, "r") as data: - all_data = json.load(data) - - compare_result = all_data.get("compare result") - compare_details = all_data.get("compare details") - print("compare package %s" %(compare_result)) - if compare_details: - for key, value in compare_details.items(): - print("%s:" % key) - details = value.get("%s details" % key) - if key != "diff": - for rpm in details: - print(rpm) - elif key == "diff": - diff_details = details - for rpm in details.keys(): - print(blank + rpm) - #for key,value in diff_details.items(): - # print("compare %s not pass" %(key)) - # for key2,value2 in value.items(): - # print(blank + key2) - # for key3,value3 in value2.items(): - # print(blank*2 + key3) - # for key4, value4 in value3.items(): - # print(blank*3 + key4) - # for line in value4: - # print(blank*4 + line) - -test() -- Gitee From 6c26b2bb36a21b9512d02c0bb0851cb9362591aa Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Tue, 9 Nov 2021 17:28:34 +0800 Subject: [PATCH 09/35] add result --- src/build/extra_work.py | 88 +++++++++++++++++++++++++++++------------ 1 file changed, 63 insertions(+), 25 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 34b18b6..0923b22 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -25,6 +25,9 @@ import json from src.build.obs_repo_source import OBSRepoSource +SUCCESS = "SUCCESS" +FAILED = "FAILED" +DIFF_ITEM = ["more", "less", "diff"] class ExtraWork(object): """ @@ -160,37 +163,71 @@ class ExtraWork(object): yaml.safe_dump(comments, f) # list except IOError: logger.exception("save check abi comment exception") - - def output_result_to_console(result_file): + + def get_dict(self, key_list, data): + if not isinstance(data, dict): + return None + for key, value in data.items(): + if key == key_list[0]: + if len(key_list) > 1: + key_list = key_list[1:] + result = self.get_dict(key_list, value) + return result + else: + return value + + def get_item_data(self, item, data): + blank = " " + if isinstance(data, list): + logger.info("%s%s:", blank*2, item) + for item_data in data: + logger.info("%s%s", blank*3, item_data) + elif isinstance(data, dict): + logger.info("%s%s:", blank*2, item) + for key, value in data.items(): + logger.info("%s%s:", blank*3, key) + if isinstance(value, list): + for i in value: + logger.info("%s%s", blank*4, i) + else: + logger.info(value) + + def output_result_to_console(self, json_file): all_data = {} + if not os.path.exists(json_file): + logger.error("%s not exists", json_file) + return FAILED with open(json_file, "r") as data: - all_data = json.loads(data) + all_data = json.load(data) compare_result = all_data.get("compare result") compare_details = all_data.get("compare details") logger.info("compare package %s", compare_result) - if compare_details: - for key, value in compare_details.items(): - logger.info("%s:", key) - details = value.get("%s details" % key) - if key != "diff": - for rpm in details: - logger.info(rpm) - else: - diff_details = details - for rpm in details.keys(): - logger.info(rpm) + if not compare_details: + return FAILED + for key in DIFF_ITEM: + key_list = [key, "%s details" % key] + details = self.get_dict(key_list, compare_details) + if details: + logger.info("%s:", key) + for rpm in details: + logger.info(rpm) + diff_details = self.get_dict(["diff", "diff details"], compare_details) blank = " " for key,value in diff_details.items(): logger.info("compare %s not pass", key) - for key2,value2 in value.items(): - logger.info(blank + key2 + ":") - for key3,value3 in value2.items(): - logger.info(blank*2 + key3 + ":") - for key4, value4 in value3.items(): - logger.info(blank*3 + key4 + ":") - for line in value4: - logger.info(blank*4 + line) + compare_list = list(value.keys()) + for compare_item in compare_list: + logger.info(" %s:", compare_item) + item_list = [[compare_item, i] for i in DIFF_ITEM] + for items in item_list: + items_data = self.get_dict(items, value) + if items_data: + self.get_item_data(items[1], items_data) + if compare_result == "pass": + return SUCCESS + else: + return FAILED def compare_rpm_diff(self, package_url, package_arch, output, committer, comment_file, obs_addr, result_path, branch_name="master", obs_repo_url=None): @@ -202,10 +239,10 @@ class ExtraWork(object): """ #get rpms logging.info("compare package start") - json_file = os.path.join(result_path, "result.json" - self.output_result_to_console(json_file) + json_file = os.path.join(result_path, "result.json") + result = self.output_result_to_console(json_file) - comment = {"name": "compare/{}/{}".format(package_arch, self._repo), "result": "SUCCESS", + comment = {"name": "compare/{}/{}".format(package_arch, self._repo), "result": result, "link": self._rpm_package.checkabi_md_in_repo(committer, self._repo, package_arch, os.path.basename(output), package_url)} @@ -334,3 +371,4 @@ if "__main__" == __name__: args.obs_addr, args.json_path, args.branch_name, args.obs_repo_url) elif args.func == "checkinstall": ew.check_install_rpm(args.branch_name, args.arch, args.install_root) + -- Gitee From b17868c8ae7fbf9c1bdacd5714fa550be2bc3fd4 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Wed, 10 Nov 2021 09:16:33 +0800 Subject: [PATCH 10/35] modify json file path --- src/build/extra_work.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 0923b22..de48ae4 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -239,8 +239,7 @@ class ExtraWork(object): """ #get rpms logging.info("compare package start") - json_file = os.path.join(result_path, "result.json") - result = self.output_result_to_console(json_file) + result = self.output_result_to_console(result_path) comment = {"name": "compare/{}/{}".format(package_arch, self._repo), "result": result, "link": self._rpm_package.checkabi_md_in_repo(committer, self._repo, package_arch, -- Gitee From b04139c35eb941618418d31380ab763865f05780 Mon Sep 17 00:00:00 2001 From: zhengyaohui Date: Thu, 11 Nov 2021 03:16:54 +0000 Subject: [PATCH 11/35] update src/build/extra_work.py. --- src/build/extra_work.py | 77 ++++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index de48ae4..5e1315e 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -229,8 +229,8 @@ class ExtraWork(object): else: return FAILED - def compare_rpm_diff(self, package_url, package_arch, output, committer, comment_file, obs_addr, - result_path, branch_name="master", obs_repo_url=None): + def compare_rpm_diff(self, package_url, package_arch, output, committer, comment_file, + result_path, pr_link): """ 对比两个版本rpm包之间的差异,根据差异找到受影响的rpm包 :param package_arch: @@ -317,33 +317,44 @@ class ExtraWork(object): if "__main__" == __name__: - args = argparse.ArgumentParser() - - args.add_argument("-f", type=str, dest="func", choices=("notify", "checkabi", "checkinstall"), help="function") - - args.add_argument("-p", type=str, dest="package", help="obs package") - args.add_argument("-a", type=str, dest="arch", help="build arch") - args.add_argument("-c", type=str, dest="committer", help="committer") - - args.add_argument("-d", type=str, dest="rpmbuild_dir", - default="/home/jenkins/agent/buildroot/home/abuild/rpmbuild", help="rpmbuild dir") - - args.add_argument("-n", type=str, dest="notify_url", help="target branch that merged to ") - args.add_argument("-t", type=str, dest="token", default=os.getcwd(), help="obs workspace dir path") - args.add_argument("-u", type=str, dest="notify_user", default="trigger", help="notify trigger user") - args.add_argument("-w", type=str, dest="notify_password", help="notify trigger password") - args.add_argument("-l", type=str, dest="rpm_repo_url", help="rpm repo where rpm saved") - args.add_argument("-m", type=str, dest="pkgship_meta", help="meta from pkgship spec") - - args.add_argument("-o", type=str, dest="output", help="checkabi result") - args.add_argument("-e", type=str, dest="comment_file", help="checkabi result comment") - args.add_argument("-b", type=str, dest="obs_repo_url", help="obs repo where rpm saved") - args.add_argument("-s", type=str, dest="obs_addr", help="obs address") - args.add_argument("-r", type=str, dest="branch_name", help="obs project name") - args.add_argument("-j", type=str, dest="json_path", help="compare package json path") - - args.add_argument("--install-root", type=str, dest="install_root", help="check install root dir") - args = args.parse_args() + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(help='sub-command help') + + #添加子命令 notify + parser_notify = subparsers.add_parser('notify', help='add help') + parser_notify.add_argument("-n", type=str, dest="notify_url", help="target branch that merged to ") + parser_notify.add_argument("-t", type=str, dest="token", default=os.getcwd(), help="obs workspace dir path") + parser_notify.add_argument("-l", type=str, dest="rpm_repo_url", help="rpm repo where rpm saved") + parser_notify.add_argument("-a", type=str, dest="arch", help="build arch") + parser_notify.add_argument("-u", type=str, dest="notify_user", default="trigger", help="notify trigger user") + parser_notify.add_argument("-w", type=str, dest="notify_password", help="notify trigger password") + + #添加子命令 checkabi + parser_checkabi = subparsers.add_parser('checkabi', help='add help') + parser_checkabi.add_argument("-l", type=str, dest="rpm_repo_url", help="rpm repo where rpm saved") + parser_checkabi.add_argument("-a", type=str, dest="arch", help="build arch") + parser_checkabi.add_argument("-o", type=str, dest="output", help="checkabi result") + parser_checkabi.add_argument("-c", type=str, dest="committer", help="committer") + parser_checkabi.add_argument("-s", type=str, dest="obs_addr", help="obs address") + parser_checkabi.add_argument("-r", type=str, dest="branch_name", help="obs project name") + parser_checkabi.add_argument("-b", type=str, dest="obs_repo_url", help="obs repo where rpm saved") + + #添加子命令 comparepackage + parser_comparepackage = subparsers.add_parser('comparepackage', help='add help') + parser_comparepackage.add_argument("-l", type=str, dest="rpm_repo_url", help="rpm repo where rpm saved") + parser_comparepackage.add_argument("-a", type=str, dest="arch", help="build arch") + parser_comparepackage.add_argument("-o", type=str, dest="output", help="checkabi result") + parser_comparepackage.add_argument("-c", type=str, dest="committer", help="committer") + parser_comparepackage.add_argument("-j", type=str, dest="json_path", help="compare package json path") + parser_comparepackage.add_argument("-p", type=str, dest="pr_link", help="PR link") + + #添加子命令 checkinstall + parser_checkinstall = subparsers.add_parser('checkinstall', help='add help') + parser_checkinstall.add_argument("-r", type=str, dest="branch_name", help="obs project name") + parser_checkinstall.add_argument("-a", type=str, dest="arch", help="build arch") + parser_checkinstall.add_argument("--install-root", type=str, dest="install_root", help="check install root dir") + + args = parser.parse_args() _ = not os.path.exists("log") and os.mkdir("log") logger_conf_path = os.path.realpath(os.path.join(os.path.realpath(__file__), "../../conf/logger.conf")) @@ -364,10 +375,12 @@ if "__main__" == __name__: args.notify_url, args.token, args.rpm_repo_url, args.arch, args.notify_user, args.notify_password) elif args.func == "checkabi": # run before copy rpm to rpm repo - #ew.check_rpm_abi(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, - #args.obs_addr, args.branch_name, args.obs_repo_url) + ew.check_rpm_abi(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, + args.obs_addr, args.branch_name, args.obs_repo_url) + elif args.func == "comparepackage": + # run before copy rpm to rpm repo ew.compare_rpm_diff(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, - args.obs_addr, args.json_path, args.branch_name, args.obs_repo_url) + args.json_path, args.pr_link) elif args.func == "checkinstall": ew.check_install_rpm(args.branch_name, args.arch, args.install_root) -- Gitee From 927cdbf030a25af5eb30a358d52fba1ba4559d0f Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Thu, 11 Nov 2021 11:40:00 +0800 Subject: [PATCH 12/35] write pr_link to json --- src/build/extra_work.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 5e1315e..a40f6c5 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -192,14 +192,16 @@ class ExtraWork(object): else: logger.info(value) - def output_result_to_console(self, json_file): + def output_result_to_console(self, json_file, pr_link): all_data = {} if not os.path.exists(json_file): logger.error("%s not exists", json_file) return FAILED with open(json_file, "r") as data: all_data = json.load(data) - + with open(json_file, "w") as data: + all_data["pr link"] = pr_link + data.write(json.dump(all_data)) compare_result = all_data.get("compare result") compare_details = all_data.get("compare details") logger.info("compare package %s", compare_result) @@ -239,7 +241,7 @@ class ExtraWork(object): """ #get rpms logging.info("compare package start") - result = self.output_result_to_console(result_path) + result = self.output_result_to_console(result_path, pr_link) comment = {"name": "compare/{}/{}".format(package_arch, self._repo), "result": result, "link": self._rpm_package.checkabi_md_in_repo(committer, self._repo, package_arch, -- Gitee From 92b9954add5d38be8803ba2849b8b449b84e7de6 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Thu, 11 Nov 2021 14:14:16 +0800 Subject: [PATCH 13/35] delete repo print --- src/build/extra_work.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index a40f6c5..34e2028 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -204,7 +204,7 @@ class ExtraWork(object): data.write(json.dump(all_data)) compare_result = all_data.get("compare result") compare_details = all_data.get("compare details") - logger.info("compare package %s", compare_result) + logger.info("compare package %s", compare_result) if not compare_details: return FAILED for key in DIFF_ITEM: -- Gitee From 7957e9664652444ba8cc706f4f05768578f254af Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Thu, 11 Nov 2021 14:41:29 +0800 Subject: [PATCH 14/35] update args --- src/build/extra_work.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 34e2028..07a538c 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -320,6 +320,9 @@ class ExtraWork(object): if "__main__" == __name__: parser = argparse.ArgumentParser() + parser.add_argument("-p", type=str, dest="package", help="obs package") + parser.add_argument("-d", type=str, dest="rpmbuild_dir", + default="/home/jenkins/agent/buildroot/home/abuild/rpmbuild", help="rpmbuild dir") subparsers = parser.add_subparsers(help='sub-command help') #添加子命令 notify @@ -348,7 +351,7 @@ if "__main__" == __name__: parser_comparepackage.add_argument("-o", type=str, dest="output", help="checkabi result") parser_comparepackage.add_argument("-c", type=str, dest="committer", help="committer") parser_comparepackage.add_argument("-j", type=str, dest="json_path", help="compare package json path") - parser_comparepackage.add_argument("-p", type=str, dest="pr_link", help="PR link") + parser_comparepackage.add_argument("-pr", type=str, dest="pr_link", help="PR link") #添加子命令 checkinstall parser_checkinstall = subparsers.add_parser('checkinstall', help='add help') -- Gitee From 0be183b5932549d790b78adbabbeac4635edeef3 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Thu, 11 Nov 2021 15:12:48 +0800 Subject: [PATCH 15/35] update args --- src/build/extra_work.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 07a538c..a3f285f 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -333,6 +333,7 @@ if "__main__" == __name__: parser_notify.add_argument("-a", type=str, dest="arch", help="build arch") parser_notify.add_argument("-u", type=str, dest="notify_user", default="trigger", help="notify trigger user") parser_notify.add_argument("-w", type=str, dest="notify_password", help="notify trigger password") + parser_notify.set_defaults(func=notify) #添加子命令 checkabi parser_checkabi = subparsers.add_parser('checkabi', help='add help') @@ -343,6 +344,7 @@ if "__main__" == __name__: parser_checkabi.add_argument("-s", type=str, dest="obs_addr", help="obs address") parser_checkabi.add_argument("-r", type=str, dest="branch_name", help="obs project name") parser_checkabi.add_argument("-b", type=str, dest="obs_repo_url", help="obs repo where rpm saved") + parser_checkabi.set_defaults(func=checkabi) #添加子命令 comparepackage parser_comparepackage = subparsers.add_parser('comparepackage', help='add help') @@ -352,12 +354,14 @@ if "__main__" == __name__: parser_comparepackage.add_argument("-c", type=str, dest="committer", help="committer") parser_comparepackage.add_argument("-j", type=str, dest="json_path", help="compare package json path") parser_comparepackage.add_argument("-pr", type=str, dest="pr_link", help="PR link") + parser_comparepackage.set_defaults(func=comparepackage) #添加子命令 checkinstall parser_checkinstall = subparsers.add_parser('checkinstall', help='add help') parser_checkinstall.add_argument("-r", type=str, dest="branch_name", help="obs project name") parser_checkinstall.add_argument("-a", type=str, dest="arch", help="build arch") parser_checkinstall.add_argument("--install-root", type=str, dest="install_root", help="check install root dir") + parser_checkinstall.set_defaults(func=checkinstall) args = parser.parse_args() -- Gitee From 900d6a898676ddc805f168d9befea63e20b7a885 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Thu, 11 Nov 2021 15:31:32 +0800 Subject: [PATCH 16/35] update args --- src/build/extra_work.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index a3f285f..2cdbede 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -316,7 +316,23 @@ class ExtraWork(object): logger.error("install rpms error, {}, {}".format(ret, err)) else: logger.info("install rpm success") - + def notify(args, ew): + # run after copy rpm to rpm repo + if ew.is_pkgship_need_notify(args.pkgship_meta): + ew.pkgship_notify( + args.notify_url, args.token, args.rpm_repo_url, args.arch, args.notify_user, args.notify_password) + + def checkabi(args, ew): + # run before copy rpm to rpm repo + ew.check_rpm_abi(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, + args.obs_addr, args.branch_name, args.obs_repo_url) + + def comparepackage(args, ew): + ew.compare_rpm_diff(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, + args.json_path, args.pr_link) + + def checkinstall(args, ew): + ew.check_install_rpm(args.branch_name, args.arch, args.install_root) if "__main__" == __name__: parser = argparse.ArgumentParser() @@ -377,19 +393,4 @@ if "__main__" == __name__: from src.utils.check_conf import CheckConfig ew = ExtraWork(args.package, args.rpmbuild_dir) - if args.func == "notify": - # run after copy rpm to rpm repo - if ew.is_pkgship_need_notify(args.pkgship_meta): - ew.pkgship_notify( - args.notify_url, args.token, args.rpm_repo_url, args.arch, args.notify_user, args.notify_password) - elif args.func == "checkabi": - # run before copy rpm to rpm repo - ew.check_rpm_abi(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, - args.obs_addr, args.branch_name, args.obs_repo_url) - elif args.func == "comparepackage": - # run before copy rpm to rpm repo - ew.compare_rpm_diff(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, - args.json_path, args.pr_link) - elif args.func == "checkinstall": - ew.check_install_rpm(args.branch_name, args.arch, args.install_root) - + args.func(args, ew) -- Gitee From c3126cec451078b5d4dea7d59c0c880f09f89460 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Thu, 11 Nov 2021 16:36:46 +0800 Subject: [PATCH 17/35] update args --- src/build/extra_work.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 2cdbede..5b990d8 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -316,23 +316,24 @@ class ExtraWork(object): logger.error("install rpms error, {}, {}".format(ret, err)) else: logger.info("install rpm success") - def notify(args, ew): - # run after copy rpm to rpm repo - if ew.is_pkgship_need_notify(args.pkgship_meta): - ew.pkgship_notify( - args.notify_url, args.token, args.rpm_repo_url, args.arch, args.notify_user, args.notify_password) - - def checkabi(args, ew): - # run before copy rpm to rpm repo - ew.check_rpm_abi(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, - args.obs_addr, args.branch_name, args.obs_repo_url) - - def comparepackage(args, ew): - ew.compare_rpm_diff(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, - args.json_path, args.pr_link) - - def checkinstall(args, ew): - ew.check_install_rpm(args.branch_name, args.arch, args.install_root) + +def notify(args, ew): + # run after copy rpm to rpm repo + if ew.is_pkgship_need_notify(args.pkgship_meta): + ew.pkgship_notify( + args.notify_url, args.token, args.rpm_repo_url, args.arch, args.notify_user, args.notify_password) + +def checkabi(args, ew): + # run before copy rpm to rpm repo + ew.check_rpm_abi(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, + args.obs_addr, args.branch_name, args.obs_repo_url) + +def comparepackage(args, ew): + ew.compare_rpm_diff(args.rpm_repo_url, args.arch, args.output, args.committer, args.comment_file, + args.json_path, args.pr_link) + +def checkinstall(args, ew): + ew.check_install_rpm(args.branch_name, args.arch, args.install_root) if "__main__" == __name__: parser = argparse.ArgumentParser() -- Gitee From cbc78d17835ec679e154de16d656423339da4a83 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Thu, 11 Nov 2021 16:53:21 +0800 Subject: [PATCH 18/35] add args -e --- src/build/extra_work.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 5b990d8..d86ddb9 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -369,6 +369,7 @@ if "__main__" == __name__: parser_comparepackage.add_argument("-a", type=str, dest="arch", help="build arch") parser_comparepackage.add_argument("-o", type=str, dest="output", help="checkabi result") parser_comparepackage.add_argument("-c", type=str, dest="committer", help="committer") + parser_comparepackage.add_argument("-e", type=str, dest="comment_file", help="compare package result comment") parser_comparepackage.add_argument("-j", type=str, dest="json_path", help="compare package json path") parser_comparepackage.add_argument("-pr", type=str, dest="pr_link", help="PR link") parser_comparepackage.set_defaults(func=comparepackage) -- Gitee From e9ff64c126b40300f6457da8f1dfa4e39cc80fcf Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Thu, 11 Nov 2021 17:11:46 +0800 Subject: [PATCH 19/35] modify json.dump --- src/build/extra_work.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index d86ddb9..7d0f829 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -201,7 +201,7 @@ class ExtraWork(object): all_data = json.load(data) with open(json_file, "w") as data: all_data["pr link"] = pr_link - data.write(json.dump(all_data)) + json.dump(all_data, data) compare_result = all_data.get("compare result") compare_details = all_data.get("compare details") logger.info("compare package %s", compare_result) -- Gitee From b97b87cde39c44d02cbc8b29a6aa85c4904054b0 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Fri, 12 Nov 2021 09:22:10 +0800 Subject: [PATCH 20/35] print comment info --- src/build/extra_work.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 7d0f829..f258c9a 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -242,7 +242,11 @@ class ExtraWork(object): #get rpms logging.info("compare package start") result = self.output_result_to_console(result_path, pr_link) - + logger.info("committer = %s", committer) + logger.info("repo = %s", self._repo) + logger.info("package_arch = %s", package_arch) + logger.info("output = %s", os.path.basename(output)) + logger.info("package_url = %s", package_url) comment = {"name": "compare/{}/{}".format(package_arch, self._repo), "result": result, "link": self._rpm_package.checkabi_md_in_repo(committer, self._repo, package_arch, os.path.basename(output), package_url)} -- Gitee From 540ebbaae86d6c14e8a6cb6b60d5b515e75174a0 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Fri, 12 Nov 2021 09:54:35 +0800 Subject: [PATCH 21/35] delete print comment info --- src/build/extra_work.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index f258c9a..2ec95e8 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -204,7 +204,7 @@ class ExtraWork(object): json.dump(all_data, data) compare_result = all_data.get("compare result") compare_details = all_data.get("compare details") - logger.info("compare package %s", compare_result) + logger.info("compare <%s> package %s", self._repo, compare_result) if not compare_details: return FAILED for key in DIFF_ITEM: @@ -242,11 +242,6 @@ class ExtraWork(object): #get rpms logging.info("compare package start") result = self.output_result_to_console(result_path, pr_link) - logger.info("committer = %s", committer) - logger.info("repo = %s", self._repo) - logger.info("package_arch = %s", package_arch) - logger.info("output = %s", os.path.basename(output)) - logger.info("package_url = %s", package_url) comment = {"name": "compare/{}/{}".format(package_arch, self._repo), "result": result, "link": self._rpm_package.checkabi_md_in_repo(committer, self._repo, package_arch, os.path.basename(output), package_url)} -- Gitee From cbb40e5ce6f96ebe01475f0f51d26d7d6fadfe48 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Fri, 12 Nov 2021 10:48:12 +0800 Subject: [PATCH 22/35] add args --- src/build/extra_work.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 2ec95e8..4f7c13c 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -336,8 +336,8 @@ def checkinstall(args, ew): if "__main__" == __name__: parser = argparse.ArgumentParser() - parser.add_argument("-p", type=str, dest="package", help="obs package") - parser.add_argument("-d", type=str, dest="rpmbuild_dir", + parser.add_argument("-p", "--package", type=str, default="src-openeuler", help="obs package") + parser.add_argument("-d", "--rpmbuild_dir", type=str, default="/home/jenkins/agent/buildroot/home/abuild/rpmbuild", help="rpmbuild dir") subparsers = parser.add_subparsers(help='sub-command help') @@ -371,6 +371,7 @@ if "__main__" == __name__: parser_comparepackage.add_argument("-e", type=str, dest="comment_file", help="compare package result comment") parser_comparepackage.add_argument("-j", type=str, dest="json_path", help="compare package json path") parser_comparepackage.add_argument("-pr", type=str, dest="pr_link", help="PR link") + parser_comparepackage.add_argument("-p", "--package", type=str, help="obs package") parser_comparepackage.set_defaults(func=comparepackage) #添加子命令 checkinstall @@ -392,6 +393,6 @@ if "__main__" == __name__: from src.build.related_rpm_package import RelatedRpms from src.utils.check_abi import CheckAbi from src.utils.check_conf import CheckConfig - + ew = ExtraWork(args.package, args.rpmbuild_dir) args.func(args, ew) -- Gitee From 9fc1bff11411fa0460a9ee1c03ba547fbf52cdef Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Mon, 15 Nov 2021 14:47:13 +0800 Subject: [PATCH 23/35] add read file --- src/build/extra_work.py | 45 ++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 4f7c13c..8976b3b 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -176,23 +176,31 @@ class ExtraWork(object): else: return value - def get_item_data(self, item, data): + def get_item_data(self, item, data, fp): blank = " " + str_list = [] if isinstance(data, list): - logger.info("%s%s:", blank*2, item) + #logger.info("%s%s:", blank*2, item) + str_list.append(" {}:\n".format(item)) for item_data in data: - logger.info("%s%s", blank*3, item_data) + #logger.info("%s%s", blank*3, item_data) + str_list.append(" {}:\n".format(item_data)) elif isinstance(data, dict): - logger.info("%s%s:", blank*2, item) + #logger.info("%s%s:", blank*2, item) + str_list.append(" {}:\n".format(item)) for key, value in data.items(): - logger.info("%s%s:", blank*3, key) + #logger.info("%s%s:", blank*3, key) + str_list.append(" {}:\n".format(key)) if isinstance(value, list): for i in value: - logger.info("%s%s", blank*4, i) + #logger.info("%s%s", blank*4, i) + str_list.append(" {}:\n".format(i)) else: - logger.info(value) + #logger.info(value) + str_list.append("{}:\n".format(value)) + fp.writelines(str_list) - def output_result_to_console(self, json_file, pr_link): + def output_result_to_console(self, json_file, pr_link, fp): all_data = {} if not os.path.exists(json_file): logger.error("%s not exists", json_file) @@ -204,28 +212,32 @@ class ExtraWork(object): json.dump(all_data, data) compare_result = all_data.get("compare result") compare_details = all_data.get("compare details") - logger.info("compare <%s> package %s", self._repo, compare_result) + #logger.info("compare <%s> package %s", self._repo, compare_result) + fp.write("compare <%s> package %s\n" %(self._repo, compare_result)) if not compare_details: return FAILED for key in DIFF_ITEM: key_list = [key, "%s details" % key] details = self.get_dict(key_list, compare_details) if details: - logger.info("%s:", key) + #logger.info("%s:", key) + fp.write("%s:\n"%key) for rpm in details: logger.info(rpm) diff_details = self.get_dict(["diff", "diff details"], compare_details) blank = " " for key,value in diff_details.items(): - logger.info("compare %s not pass", key) + #logger.info("compare %s not pass", key) + fp.write("compare %s not pass\n" % key) compare_list = list(value.keys()) for compare_item in compare_list: - logger.info(" %s:", compare_item) + #logger.info(" %s:", compare_item) + fp.write("%s:\n" % compare_item) item_list = [[compare_item, i] for i in DIFF_ITEM] for items in item_list: items_data = self.get_dict(items, value) if items_data: - self.get_item_data(items[1], items_data) + self.get_item_data(items[1], items_data, fp) if compare_result == "pass": return SUCCESS else: @@ -241,7 +253,12 @@ class ExtraWork(object): """ #get rpms logging.info("compare package start") - result = self.output_result_to_console(result_path, pr_link) + tmp_file = "./tmp_result.txt" + with open(tmp_file, "w") af fp: + result = self.output_result_to_console(result_path, pr_link, fp) + with open(tmp_file, "r") af fp: + logger.info(fp.read()) + comment = {"name": "compare/{}/{}".format(package_arch, self._repo), "result": result, "link": self._rpm_package.checkabi_md_in_repo(committer, self._repo, package_arch, os.path.basename(output), package_url)} -- Gitee From 71a3d15344dca51e3d83d23ac356122900c135b4 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Mon, 15 Nov 2021 14:55:52 +0800 Subject: [PATCH 24/35] add read file --- src/build/extra_work.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 8976b3b..883a75e 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -254,9 +254,9 @@ class ExtraWork(object): #get rpms logging.info("compare package start") tmp_file = "./tmp_result.txt" - with open(tmp_file, "w") af fp: + with open(tmp_file, "w") as fp: result = self.output_result_to_console(result_path, pr_link, fp) - with open(tmp_file, "r") af fp: + with open(tmp_file, "r") as fp: logger.info(fp.read()) comment = {"name": "compare/{}/{}".format(package_arch, self._repo), "result": result, -- Gitee From 271e07a93e888c04056d3c4b36f08f3ad3451f50 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Mon, 15 Nov 2021 15:11:17 +0800 Subject: [PATCH 25/35] modify print formet --- src/build/extra_work.py | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 883a75e..c8b23a9 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -177,27 +177,20 @@ class ExtraWork(object): return value def get_item_data(self, item, data, fp): - blank = " " str_list = [] if isinstance(data, list): - #logger.info("%s%s:", blank*2, item) str_list.append(" {}:\n".format(item)) for item_data in data: - #logger.info("%s%s", blank*3, item_data) - str_list.append(" {}:\n".format(item_data)) + str_list.append(" {}\n".format(item_data)) elif isinstance(data, dict): - #logger.info("%s%s:", blank*2, item) str_list.append(" {}:\n".format(item)) for key, value in data.items(): - #logger.info("%s%s:", blank*3, key) str_list.append(" {}:\n".format(key)) if isinstance(value, list): for i in value: - #logger.info("%s%s", blank*4, i) - str_list.append(" {}:\n".format(i)) + str_list.append(" {}\n".format(i)) else: - #logger.info(value) - str_list.append("{}:\n".format(value)) + str_list.append("{}\n".format(value)) fp.writelines(str_list) def output_result_to_console(self, json_file, pr_link, fp): @@ -212,7 +205,6 @@ class ExtraWork(object): json.dump(all_data, data) compare_result = all_data.get("compare result") compare_details = all_data.get("compare details") - #logger.info("compare <%s> package %s", self._repo, compare_result) fp.write("compare <%s> package %s\n" %(self._repo, compare_result)) if not compare_details: return FAILED @@ -220,18 +212,15 @@ class ExtraWork(object): key_list = [key, "%s details" % key] details = self.get_dict(key_list, compare_details) if details: - #logger.info("%s:", key) fp.write("%s:\n"%key) for rpm in details: logger.info(rpm) diff_details = self.get_dict(["diff", "diff details"], compare_details) blank = " " for key,value in diff_details.items(): - #logger.info("compare %s not pass", key) fp.write("compare %s not pass\n" % key) compare_list = list(value.keys()) for compare_item in compare_list: - #logger.info(" %s:", compare_item) fp.write("%s:\n" % compare_item) item_list = [[compare_item, i] for i in DIFF_ITEM] for items in item_list: -- Gitee From fb03cfa0edc634c015dd3c553d6484e518cc2a06 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Mon, 15 Nov 2021 15:16:33 +0800 Subject: [PATCH 26/35] modify print formet --- src/build/extra_work.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index c8b23a9..eadbb1a 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -212,9 +212,9 @@ class ExtraWork(object): key_list = [key, "%s details" % key] details = self.get_dict(key_list, compare_details) if details: - fp.write("%s:\n"%key) + fp.write("%s:\n" % key) for rpm in details: - logger.info(rpm) + fp.write("%s\n" % rpm) diff_details = self.get_dict(["diff", "diff details"], compare_details) blank = " " for key,value in diff_details.items(): -- Gitee From 120a2990af8d90adb4b2b51c3fdc4a04fbe96f37 Mon Sep 17 00:00:00 2001 From: wanghuan158 Date: Fri, 19 Nov 2021 10:52:54 +0000 Subject: [PATCH 27/35] =?UTF-8?q?update=20src/build/extra=5Fwork.py.=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AD=97=E6=AE=B5=E5=90=8D=E7=A7=B0=E4=B8=8E?= =?UTF-8?q?oecp=E8=BE=93=E5=87=BA=E7=9A=84=E5=AD=97=E6=AE=B5=E5=8C=B9?= =?UTF-8?q?=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/build/extra_work.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index eadbb1a..d46c3a1 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -27,7 +27,6 @@ from src.build.obs_repo_source import OBSRepoSource SUCCESS = "SUCCESS" FAILED = "FAILED" -DIFF_ITEM = ["more", "less", "diff"] class ExtraWork(object): """ @@ -195,38 +194,41 @@ class ExtraWork(object): def output_result_to_console(self, json_file, pr_link, fp): all_data = {} + diff_item = ["more", "less", "diff"] + if not os.path.exists(json_file): logger.error("%s not exists", json_file) return FAILED with open(json_file, "r") as data: all_data = json.load(data) with open(json_file, "w") as data: - all_data["pr link"] = pr_link + all_data["pr_link"] = pr_link json.dump(all_data, data) - compare_result = all_data.get("compare result") - compare_details = all_data.get("compare details") + compare_result = all_data.get("compare_result") + compare_details = all_data.get("compare_details") fp.write("compare <%s> package %s\n" %(self._repo, compare_result)) if not compare_details: return FAILED - for key in DIFF_ITEM: - key_list = [key, "%s details" % key] + for key in diff_item: + key_list = [key, "%s_details" % key] details = self.get_dict(key_list, compare_details) if details: fp.write("%s:\n" % key) for rpm in details: fp.write("%s\n" % rpm) - diff_details = self.get_dict(["diff", "diff details"], compare_details) - blank = " " + + diff_details = self.get_dict(["diff", "diff_details"], compare_details) for key,value in diff_details.items(): fp.write("compare %s not pass\n" % key) compare_list = list(value.keys()) for compare_item in compare_list: fp.write("%s:\n" % compare_item) - item_list = [[compare_item, i] for i in DIFF_ITEM] + item_list = [[compare_item, i] for i in diff_item] for items in item_list: items_data = self.get_dict(items, value) if items_data: self.get_item_data(items[1], items_data, fp) + if compare_result == "pass": return SUCCESS else: -- Gitee From fd8e0258d8649c337af77b6f5974a2820073d9c5 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Mon, 22 Nov 2021 11:02:49 +0800 Subject: [PATCH 28/35] modify show formit --- src/build/extra_work.py | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index d46c3a1..4c06bf8 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -175,7 +175,8 @@ class ExtraWork(object): else: return value - def get_item_data(self, item, data, fp): + @staticmethod + def get_item_data(item, data, fp): str_list = [] if isinstance(data, list): str_list.append(" {}:\n".format(item)) @@ -192,6 +193,22 @@ class ExtraWork(object): str_list.append("{}\n".format(value)) fp.writelines(str_list) + def show_rpm_diff(self, compare_details, fp): + for key in ["more", "less", "diff"]: + key_list = [key, "%s_details" % key] + details = self.get_dict(key_list, compare_details) + if not details: + continue + if key == "diff": + fp.write("diff[old_rpm_name,new_rpm_name]:\n") + for rpm in details: + new_rpm_name = self.get_dict([rpm, "name", "new"], details) + fp.write("%s,%s\n" %(rpm, new_rpm_name)) + else: + fp.write("%s:\n" % key) + for rpm in details: + fp.write("%s\n" % rpm) + def output_result_to_console(self, json_file, pr_link, fp): all_data = {} diff_item = ["more", "less", "diff"] @@ -201,6 +218,7 @@ class ExtraWork(object): return FAILED with open(json_file, "r") as data: all_data = json.load(data) + # 写入pr link到json文件 with open(json_file, "w") as data: all_data["pr_link"] = pr_link json.dump(all_data, data) @@ -209,19 +227,18 @@ class ExtraWork(object): fp.write("compare <%s> package %s\n" %(self._repo, compare_result)) if not compare_details: return FAILED - for key in diff_item: - key_list = [key, "%s_details" % key] - details = self.get_dict(key_list, compare_details) - if details: - fp.write("%s:\n" % key) - for rpm in details: - fp.write("%s\n" % rpm) + # 显示所有的差异 + self.show_rpm_diff(compare_details, fp) + # 显示diff的详细差异 diff_details = self.get_dict(["diff", "diff_details"], compare_details) - for key,value in diff_details.items(): - fp.write("compare %s not pass\n" % key) + for key, value in diff_details.items(): + new_rpm_name = self.get_dict(["name", "new"], value) + fp.write("compare %s,%s not pass\n" % (key, new_rpm_name)) compare_list = list(value.keys()) for compare_item in compare_list: + if compare_item == "name": + continue fp.write("%s:\n" % compare_item) item_list = [[compare_item, i] for i in diff_item] for items in item_list: -- Gitee From f861279a727e4cbc7baef7a1b41df25c8c753f49 Mon Sep 17 00:00:00 2001 From: wanghuan158 Date: Mon, 22 Nov 2021 10:23:02 +0000 Subject: [PATCH 29/35] =?UTF-8?q?checkabi=E5=8F=82=E6=95=B0=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/build/extra_work.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index 4c06bf8..d8389f1 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -385,6 +385,8 @@ if "__main__" == __name__: parser_checkabi.add_argument("-s", type=str, dest="obs_addr", help="obs address") parser_checkabi.add_argument("-r", type=str, dest="branch_name", help="obs project name") parser_checkabi.add_argument("-b", type=str, dest="obs_repo_url", help="obs repo where rpm saved") + parser_checkabi.add_argument("-p", "--package", type=str, help="obs package") + parser_checkabi.add_argument("-e", type=str, dest="comment_file", help="compare package result comment") parser_checkabi.set_defaults(func=checkabi) #添加子命令 comparepackage -- Gitee From d1eb2162855e8f6325ded5a58f53aa80f9d77f0a Mon Sep 17 00:00:00 2001 From: wanghuan158 Date: Tue, 23 Nov 2021 01:16:40 +0000 Subject: [PATCH 30/35] =?UTF-8?q?comment=E4=BF=A1=E6=81=AF=E5=8A=A0?= =?UTF-8?q?=E4=B8=8Acheckabi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/build/gitee_comment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/build/gitee_comment.py b/src/build/gitee_comment.py index 3622b4f..e6e94fe 100755 --- a/src/build/gitee_comment.py +++ b/src/build/gitee_comment.py @@ -103,7 +103,7 @@ class Comment(object): comments.extend(self._comment_of_ac(self._up_up_builds[0])) if self._up_builds: comments.extend(self._comment_of_build(self._up_builds)) - #comments.extend(self._comment_of_check_abi(self._up_builds)) + comments.extend(self._comment_of_check_abi(self._up_builds)) comments.extend(self._comment_of_compare_package(self._up_builds)) comments.append("") -- Gitee From d8bc1e6d4eafd7a7166ac1b571d18484eb08a3e6 Mon Sep 17 00:00:00 2001 From: wanghuan158 Date: Tue, 23 Nov 2021 01:17:34 +0000 Subject: [PATCH 31/35] =?UTF-8?q?=E5=88=A0=E9=99=A4checkabi=E9=87=8C?= =?UTF-8?q?=E9=9D=A2=E7=9A=84compare=20package=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/build/extra_work.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index d8389f1..b558474 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -94,7 +94,6 @@ class ExtraWork(object): :return: """ #get rpms - logging.info("compare package start") curr_rpm = self._rpm_package.main_package_local() last_rpm = self._rpm_package.last_main_package(package_arch, package_url) logger.debug("curr_rpm: {}".format(curr_rpm)) @@ -156,7 +155,6 @@ class ExtraWork(object): comments.append(comment) logger.debug("check abi comments: {}".format(comments)) - logging.info("compare package finish") try: with open(comment_file, "w") as f: yaml.safe_dump(comments, f) # list -- Gitee From c3ddb758dd30ece365211330015eaf78b6417c9e Mon Sep 17 00:00:00 2001 From: wanghuan158 Date: Tue, 23 Nov 2021 09:07:29 +0000 Subject: [PATCH 32/35] update src/build/gitee_comment.py. --- src/build/gitee_comment.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/build/gitee_comment.py b/src/build/gitee_comment.py index e6e94fe..5d7e412 100755 --- a/src/build/gitee_comment.py +++ b/src/build/gitee_comment.py @@ -103,7 +103,7 @@ class Comment(object): comments.extend(self._comment_of_ac(self._up_up_builds[0])) if self._up_builds: comments.extend(self._comment_of_build(self._up_builds)) - comments.extend(self._comment_of_check_abi(self._up_builds)) + #comments.extend(self._comment_of_check_abi(self._up_builds)) comments.extend(self._comment_of_compare_package(self._up_builds)) comments.append("") @@ -201,7 +201,7 @@ class Comment(object): for item in content: ac_result = ACResult.get_instance(item.get("result")) comments.append(self.__class__.comment_html_table_tr( - "compare_package", ac_result.emoji, ac_result.hint, "{}{}".format(build.get_build_url(), "console"), build.buildno)) + item.get("name"), ac_result.emoji, ac_result.hint, "{}{}".format(build.get_build_url(), "console"), build.buildno)) break logger.info("compare package comment: {}".format(comments)) -- Gitee From a6a49bbb995d146bf855c23f04857967417e8a50 Mon Sep 17 00:00:00 2001 From: wwx1101975 Date: Tue, 23 Nov 2021 17:49:18 +0800 Subject: [PATCH 33/35] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/build/gitee_comment.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/build/gitee_comment.py b/src/build/gitee_comment.py index 5d7e412..719791c 100755 --- a/src/build/gitee_comment.py +++ b/src/build/gitee_comment.py @@ -195,10 +195,13 @@ class Comment(object): with open(check_abi_comment_file, "r") as f: try: content = yaml.safe_load(f) + logging.info("content = %s", content) + except YAMLError: # yaml base exception logger.exception("illegal yaml format of check abi comment file ") logger.debug("comment: {}".format(content)) for item in content: + logging.info("item_name = %s", item.get("name")) ac_result = ACResult.get_instance(item.get("result")) comments.append(self.__class__.comment_html_table_tr( item.get("name"), ac_result.emoji, ac_result.hint, "{}{}".format(build.get_build_url(), "console"), build.buildno)) -- Gitee From 7645b33883cbec9e186b893eafed0d070509f3a8 Mon Sep 17 00:00:00 2001 From: wanghuan158 Date: Wed, 24 Nov 2021 02:43:35 +0000 Subject: [PATCH 34/35] update src/build/extra_work.py. --- src/build/extra_work.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/build/extra_work.py b/src/build/extra_work.py index b558474..4403534 100755 --- a/src/build/extra_work.py +++ b/src/build/extra_work.py @@ -162,6 +162,12 @@ class ExtraWork(object): logger.exception("save check abi comment exception") def get_dict(self, key_list, data): + """ + 获取字典value + :param key_list: key列表 + :param data: 字典 + :return: + """ if not isinstance(data, dict): return None for key, value in data.items(): @@ -175,6 +181,13 @@ class ExtraWork(object): @staticmethod def get_item_data(item, data, fp): + """ + 输出diff的详情至文件fp中 + :param item: + :param data: + :param fp: + :return: + """ str_list = [] if isinstance(data, list): str_list.append(" {}:\n".format(item)) @@ -192,6 +205,12 @@ class ExtraWork(object): fp.writelines(str_list) def show_rpm_diff(self, compare_details, fp): + """ + 输出rpm包差异 + :param compare_details:差异详情 + :param fp: 存放展示结果的文件句柄 + :return: + """ for key in ["more", "less", "diff"]: key_list = [key, "%s_details" % key] details = self.get_dict(key_list, compare_details) @@ -208,6 +227,13 @@ class ExtraWork(object): fp.write("%s\n" % rpm) def output_result_to_console(self, json_file, pr_link, fp): + """ + 解析结果文件并输出展示到jenkins上 + :param json_file: 结果文件json + :param pr_link: pr_link + :param fp: 存放展示结果的文件句柄 + :return: 比对结果 + """ all_data = {} diff_item = ["more", "less", "diff"] @@ -265,7 +291,7 @@ class ExtraWork(object): with open(tmp_file, "r") as fp: logger.info(fp.read()) - comment = {"name": "compare/{}/{}".format(package_arch, self._repo), "result": result, + comment = {"name": "compare_package/{}/{}".format(package_arch, self._repo), "result": result, "link": self._rpm_package.checkabi_md_in_repo(committer, self._repo, package_arch, os.path.basename(output), package_url)} -- Gitee From 9cf32c7951a82416b11f4757acbd2153adc5be84 Mon Sep 17 00:00:00 2001 From: wanghuan158 Date: Wed, 24 Nov 2021 02:44:35 +0000 Subject: [PATCH 35/35] update src/build/gitee_comment.py. --- src/build/gitee_comment.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/build/gitee_comment.py b/src/build/gitee_comment.py index 719791c..5d7e412 100755 --- a/src/build/gitee_comment.py +++ b/src/build/gitee_comment.py @@ -195,13 +195,10 @@ class Comment(object): with open(check_abi_comment_file, "r") as f: try: content = yaml.safe_load(f) - logging.info("content = %s", content) - except YAMLError: # yaml base exception logger.exception("illegal yaml format of check abi comment file ") logger.debug("comment: {}".format(content)) for item in content: - logging.info("item_name = %s", item.get("name")) ac_result = ACResult.get_instance(item.get("result")) comments.append(self.__class__.comment_html_table_tr( item.get("name"), ac_result.emoji, ac_result.hint, "{}{}".format(build.get_build_url(), "console"), build.buildno)) -- Gitee