From f45ba19c2249375eda85c9fadc0b92a323d53a6f Mon Sep 17 00:00:00 2001 From: dongjie110 <17621827400@163.com> Date: Sun, 20 Feb 2022 15:17:56 +0800 Subject: [PATCH] =?UTF-8?q?obs=5Fmeta=20=E6=8F=90=E4=BA=A4=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=A0=A1=E9=AA=8C=E6=98=AF=E5=90=A6=E5=9C=A8release?= =?UTF-8?q?=5Fmanagement=E7=9A=84=E5=9B=BA=E5=AE=9A=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E4=B8=AD,=E5=A6=82=E6=9E=9C=E6=9C=89=E6=8B=92=E7=BB=9D?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/check_meta_service.py | 67 +++++++++++++++++++++++++++++++++----- 1 file changed, 59 insertions(+), 8 deletions(-) diff --git a/core/check_meta_service.py b/core/check_meta_service.py index 9f203e3..3f0375e 100644 --- a/core/check_meta_service.py +++ b/core/check_meta_service.py @@ -114,6 +114,7 @@ class CheckMetaPull(object): """ log.info("line:%s" % line) new_file_path = '' + complete_new_file_path = '' log_list = list(line.split()) temp_log_type = log_list[0] if len(log_list) == 3: @@ -125,11 +126,15 @@ class CheckMetaPull(object): raise SystemExit("*******PLEASE CHECK YOUR PR*******") else: new_file_path = list(line.split())[2] + complete_new_file_path = list(line.split())[2] + print ("**************************{}".format(new_file_path)) elif len(log_list) == 2: if temp_log_type != "D": new_file_path = list(line.split())[1] + complete_new_file_path = list(line.split())[1] log.info(new_file_path) - return new_file_path + print ('----------------------------------{}'.format(new_file_path)) + return new_file_path, complete_new_file_path def _check_file_format(self, file_path): """ @@ -404,12 +409,15 @@ class CheckMetaPull(object): self._get_latest_obs_meta() changefile = self._get_change_file() changelist = [] + complete_changelist = [] for msg in changefile: - parse_git = self._parse_git_log(msg) + parse_git, complete_parse_git = self._parse_git_log(msg) if parse_git: changelist.append(parse_git) - if changelist: - return changelist + if complete_parse_git: + complete_changelist.append(complete_parse_git) + if changelist or complete_changelist: + return changelist, complete_changelist else: log.info("Finish!!There are no file need to check") sys.exit() @@ -526,12 +534,30 @@ class CheckMetaPull(object): log.info(service_path_list) self._check_service_meta(service_path_list) + def _check_pr_rule(self, release_manage, pr_file): + log.info("************************************** CHECK PR RULE**********************") + if release_manage: + for change_file in pr_file: + path_info = self._get_path_info(change_file) + if path_info[1] in release_manage: + log.error("check pr rule failed repository path:{}".format(change_file)) + else: + log.info("check pr rule success repository path:{}".format(change_file)) + else: + log.error("get release management data failed,please check network and token**********************") + log.info("************************************** CHECK PR RULE**********************") + log.info("check pr rule finished,please wait other check!!!") + return True + + def do_all(self): """ make the get obs_meta change fuction and check fuction doing """ if self.prid and self.token: - change_result = self._get_all_change_file() + release_management_data = self._release_management_tree() + change_result, complete_change_result = self._get_all_change_file() + pr_check_result = self._check_pr_rule(release_management_data, complete_change_result) check_result = self._check_service_meta(change_result) elif not self.prid and self.branch: self._clean() @@ -540,11 +566,36 @@ class CheckMetaPull(object): else: log.error("ERROR_INPUT:PLEASE CHECK YOU INPUT") + def _release_management_tree(self): + log.info("************************************** GET RELASE MANAGEMENT DATA**********************") + release_management_data = [] + sha_api_url = "https://gitee.com/api/v5/repos/openeuler/release-management/branches/master?access_token={}".format(self.token) + sha_value = self._gitee_api_request(sha_api_url)['commit'].get('sha', '') + if sha_value: + api_url = "https://gitee.com/api/v5/repos/openeuler/release-management/git/trees/{}?access_token={}".format(sha_value, self.token) + release_manage_value = self._gitee_api_request(api_url)['tree'] + for current_file in release_manage_value: + if current_file['type'] == 'tree': + release_management_data.append(current_file['path']) + log.info("************************************** GET RELASE MANAGEMENT DATA**********************") + return release_management_data + + def _gitee_api_request(self, url): + """ + gitee api interface + """ + try: + response = requests.request(method='get', url=url) + response_value = response.json() + return response_value + except Exception as e: + log.error("error to request {}".format(url)) + if __name__ == "__main__": kw = {} - kw['pr_id'] = "780" + kw['pr_id'] = "1282" kw['branch'] = "" - kw['access_token'] = "" + kw['access_token'] = "e91ca14f2d98cf2eb0dbf3e96d4dd79a" kw['obs_meta_path'] = "" check = CheckMetaPull(**kw) - check.do_all() + check.do_all() \ No newline at end of file -- Gitee