From 0532feec05442ad1c8e790e474bb6f712239fbf7 Mon Sep 17 00:00:00 2001 From: wanghuan158 Date: Wed, 24 Jul 2024 17:26:03 +0800 Subject: [PATCH] mm --- src/ac/acl/binary/check_binary_file.py | 8 ++-- src/ac/acl/spec/check_spec.py | 10 ++-- src/ac/framework/ac.yaml | 4 +- src/build/gitee_comment.py | 66 +++++++++++++++++++------- src/lib/comment.sh | 2 +- 5 files changed, 59 insertions(+), 31 deletions(-) diff --git a/src/ac/acl/binary/check_binary_file.py b/src/ac/acl/binary/check_binary_file.py index 61f2e3f..f861cb8 100644 --- a/src/ac/acl/binary/check_binary_file.py +++ b/src/ac/acl/binary/check_binary_file.py @@ -19,7 +19,7 @@ import shutil import logging from src.ac.framework.ac_base import BaseCheck -from src.ac.framework.ac_result import FAILED, SUCCESS +from src.ac.framework.ac_result import WARNING, SUCCESS from src.ac.common.gitee_repo import GiteeRepo from pyrpm.spec import Spec, replace_macros @@ -66,7 +66,7 @@ class CheckBinaryFile(BaseCheck): if decompress_file not in self._tarball_in_spec: need_compress_files.append(decompress_file) self._gr.set_compress_files(need_compress_files) - return SUCCESS if 0 == self._gr.decompress_all() else FAILED + return SUCCESS if 0 == self._gr.decompress_all() else WARNING def check_binary(self): """ @@ -76,8 +76,8 @@ class CheckBinaryFile(BaseCheck): if suffixes_list: logger_con = ["%s: \n%s" % (key, value) for suffix_list in suffixes_list for key, value in suffix_list.items()] - logger.error("binary file of type exists:\n%s", "\n".join(logger_con)) - return FAILED + logger.warning("binary file of type exists:\n%s", "\n".join(logger_con)) + return WARNING else: return SUCCESS diff --git a/src/ac/acl/spec/check_spec.py b/src/ac/acl/spec/check_spec.py index 3d4979f..a314d5b 100644 --- a/src/ac/acl/spec/check_spec.py +++ b/src/ac/acl/spec/check_spec.py @@ -25,7 +25,7 @@ import yaml from src.proxy.git_proxy import GitProxy from src.proxy.requests_proxy import do_requests -from src.ac.framework.ac_result import FAILED, SUCCESS, WARNING +from src.ac.framework.ac_result import FAILED, SUCCESS from src.ac.framework.ac_base import BaseCheck from src.ac.common.rpm_spec_adapter import RPMSpecAdapter from src.ac.common.gitee_repo import GiteeRepo @@ -134,9 +134,9 @@ class CheckSpec(BaseCheck): logger.debug("revert commit") return SUCCESS - logger.warning("current version: %s-r%s, last version: %s-r%s", + logger.error("current version: %s-r%s, last version: %s-r%s", self._spec.version, self._spec.release, spec_o.version, spec_o.release) - return WARNING + return FAILED def check_homepage(self, timeout=30, retrying=3, interval=1): """ @@ -261,8 +261,8 @@ class CheckSpec(BaseCheck): logger.error("patch %s lost", patch) result = FAILED for patch in patches_file - patches_spec: - logger.warning("patch %s redundant", patch) - result = WARNING + logger.error("patch %s redundant", patch) + result = FAILED with open(os.path.join(self._work_dir, self._gr.spec_file), "r", encoding="utf-8") as fp: all_str = fp.read() adapter = Spec.from_string(all_str) diff --git a/src/ac/framework/ac.yaml b/src/ac/framework/ac.yaml index 9ffb93b..99b842c 100644 --- a/src/ac/framework/ac.yaml +++ b/src/ac/framework/ac.yaml @@ -21,9 +21,7 @@ src-openeuler: entry: CheckPackageYaml ignored: ["fields"] package_license: - hint: check_package_license - module: package_license.check_license - entry: CheckLicense + exclude: True binary: hint: check_binary_file module: binary.check_binary_file diff --git a/src/build/gitee_comment.py b/src/build/gitee_comment.py index 9241266..c3bbccc 100755 --- a/src/build/gitee_comment.py +++ b/src/build/gitee_comment.py @@ -54,6 +54,7 @@ class Comment(object): self.compare_package_result = {} self.check_item_result = {} self.check_install_result = True + self.check_license_result = True self._issue_flag = "__cmp_pkg_issue__" @staticmethod @@ -182,7 +183,7 @@ class Comment(object): return "\n".join(comments) - def comment_compare_package_details(self, gitee_proxy, check_result_file): + def comment_compare_package_details(self, gitee_proxy, check_result_file, tbranch): """ compare package结果上报 @@ -190,7 +191,7 @@ class Comment(object): :param check_result_file: :return: """ - comments = self._comment_of_compare_package_details(check_result_file) + comments = self._comment_of_compare_package_details(check_result_file, tbranch) gitee_proxy.comment_pr(self._pr, "\n".join(comments)) return "\n".join(comments) @@ -293,6 +294,36 @@ class Comment(object): build_result = sum([ACResult.get_instance(build["result"]) for build in self._up_builds], SUCCESS) return build_result + def check_ac_result(self): + """ + ac result check + :return: + """ + acl = self.get_acl() + + for index, item in enumerate(acl): + if item["result"] == 2: + return False + + return True + + @staticmethod + def get_acl(): + """ + get_acl + :return: + """ + acl = {} + if "ACL" not in os.environ: + logger.debug("no ac check") + + try: + acl = json.loads(os.environ["ACL"]) + logger.debug("ac result: %s", acl) + except ValueError: + logger.exception("invalid ac result format") + return acl + def _get_upstream_builds(self, jenkins_proxy): """ get upstream builds @@ -333,18 +364,8 @@ class Comment(object): :param build: Jenkins Build object,门禁检查jenkins构建对象 :return: """ - if "ACL" not in os.environ: - logger.debug("no ac check") - return [] - - try: - acl = json.loads(os.environ["ACL"]) - logger.debug("ac result: %s", acl) - except ValueError: - logger.exception("invalid ac result format") - return [] - comments = [] + acl = self.get_acl() for index, item in enumerate(acl): ac_result = ACResult.get_instance(item["result"]) @@ -361,13 +382,14 @@ class Comment(object): return comments - def _comment_of_compare_package_details(self, check_result_file): + def _comment_of_compare_package_details(self, check_result_file, tbranch): """ compare package details :param: :return: """ comments = [] + comments.append(f"如下为接口变更检查结果,目标分支为{tbranch},请PR提交者check差异信息") comments_title = [" " ""] logger.info("start get comment of compare package details.") @@ -579,7 +601,9 @@ class Comment(object): logger.info(f"JSON DATA:{json_data}") single_build_result = self._get_dict(["single_build_check", "current_result"], json_data) check_install_result = self._get_dict(["single_install_check", "current_result"], json_data) + package_license_result = self._get_dict(["package_license_check", "current_result"], json_data) check_item_info["check_install"] = check_install_result if check_install_result else "failed" + check_item_info["check_license"] = package_license_result if package_license_result else "failed" elif yaml_data: logger.info(f"YAML DATA:{yaml_data}") single_build_result = build["result"] @@ -588,13 +612,15 @@ class Comment(object): single_build_result = build["result"] if check_item_info and check_item_info.get("check_install").lower() != "success": self.check_install_result = False + if check_item_info and check_item_info.get("check_license").lower() != "success": + self.check_license_result = False logger.info(f"single_build_result:{single_build_result}") logger.info(f"check_item_info:{check_item_info}") if os.path.exists("support_arch"): with open("support_arch", "r") as s_file: if arch not in s_file.readline(): ac_result = ACResult.get_instance("EXCLUDE") - item_num = 2 + item_num = 3 else: ac_result = ACResult.get_instance(single_build_result) item_num = len(check_item_info) - list(check_item_info.values()).count(None) + 1 @@ -611,7 +637,10 @@ class Comment(object): if ac_result.hint == "EXCLUDE": comments.append("".format( "check_install", ac_result.emoji, ac_result.hint)) + comments.append("".format( + "check_license", ac_result.emoji, ac_result.hint)) arch_dict["check_install"] = ac_result.hint + arch_dict["check_license"] = ac_result.hint else: for check_item, check_result in check_item_info.items(): if check_result: @@ -741,6 +770,7 @@ def init_args(): parser.add_argument("-l", type=str, dest="detail_analyse_url", default="", help="compare package detail analyse url") parser.add_argument("-a", type=str, dest="check_item_comment_files", nargs="*", help="check item comment files") + parser.add_argument("-tb", type=str, dest="tbranch", help="target branch") parser.add_argument("--disable", dest="enable", default=True, action="store_false", help="comment to gitee switch") parser.add_argument("--platform", type=str, dest="platform", default="gitee", help="gitee/github") @@ -782,14 +812,14 @@ if "__main__" == __name__: comment_content = comment.comment_build(gp) dd.set_attr_etime("comment.build.etime") dd.set_attr("comment.build.content.html", comment_content) - - if comment.check_build_result() == SUCCESS and comment.check_install_result: + result_list = [comment.check_ac_result(), comment.check_install_result, comment.check_license_result] + if comment.check_build_result() == SUCCESS and all(result_list): gp.delete_tag_of_pr(args.pr, "ci_failed") gp.create_tags_of_pr(args.pr, "ci_successful") dd.set_attr("comment.build.tags", ["ci_successful"]) dd.set_attr("comment.build.result", "successful") if args.check_result_file: - comment.comment_compare_package_details(gp, args.check_result_file) + comment.comment_compare_package_details(gp, args.check_result_file, args.tbranch) # comment.submit_compare_package_details_issue(gp, args.check_result_file, args.detail_result_file, # args.detail_analyse_url, args.pr) else: diff --git a/src/lib/comment.sh b/src/lib/comment.sh index 7cabd58..09a021f 100644 --- a/src/lib/comment.sh +++ b/src/lib/comment.sh @@ -88,7 +88,7 @@ function exec_comment() { python3 ${shell_path}/src/build/gitee_comment.py -o $repo_owner -r $repo -p $prid -c $committer -t ${token}\ -b $jenkins_api_host -u $jenkins_user -j $jenkins_api_token -a ${check_item_comment_aarch64} ${check_item_comment_x86}\ -f ${compare_package_result_x86},${compare_package_result_aarch64} -m ${commentid} -l ${url_files_server} \ - -d ${detail_result_file_x86_64},${detail_result_file_aarch64} --platform ${platform} + -d ${detail_result_file_x86_64},${detail_result_file_aarch64} -tb ${tbranch} --platform ${platform} log_info "***** End to exec comment *****" log_info "***** Start to exec comment to kafka*****" python3 ${shell_path}/src/build/comment_to_dashboard.py -r $repo -c $committer -m ${commentid} -g $jobtriggertime\ -- Gitee
Arch Name Check Items Rpm Name Check ResultBuild Details
{} {}{}
{} {}{}