From 8f5e738e10c381b927ac64dbaa9c80938db3a317 Mon Sep 17 00:00:00 2001 From: rnetser Date: Thu, 24 Apr 2025 13:13:32 +0300 Subject: [PATCH 1/4] 19 --- 19 | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 19 diff --git a/19 b/19 new file mode 100644 index 00000000..e69de29b From f81398e2c7b9c59db63f7e95da36c6913c4f6365 Mon Sep 17 00:00:00 2001 From: rnetser Date: Wed, 7 May 2025 18:50:12 +0300 Subject: [PATCH 2/4] add log if user not in approvers --- webhook_server/libs/github_api.py | 61 +++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 16 deletions(-) diff --git a/webhook_server/libs/github_api.py b/webhook_server/libs/github_api.py index a8741827..67add13f 100644 --- a/webhook_server/libs/github_api.py +++ b/webhook_server/libs/github_api.py @@ -112,7 +112,8 @@ def __init__(self, hook_data: dict[Any, Any], headers: Headers, logger: logging. self.repository = get_github_repo_api(github_api=self.github_api, repository=self.repository_full_name) # Once we have a repository, we can get the config from .github-webhook-server.yaml local_repository_config = self.config.repository_local_data( - github_api=self.github_api, repository_full_name=self.repository_full_name + github_api=self.github_api, + repository_full_name=self.repository_full_name, ) # Call _repo_data_from_config() again to update self args from .github-webhook-server.yaml self._repo_data_from_config(repository_config=local_repository_config) @@ -332,10 +333,14 @@ def _repo_data_from_config(self, repository_config: dict[str, Any]) -> None: ) self.auto_verified_and_merged_users: list[str] = self.config.get_value( - value="auto-verified-and-merged-users", return_on_none=[], extra_dict=repository_config + value="auto-verified-and-merged-users", + return_on_none=[], + extra_dict=repository_config, ) self.can_be_merged_required_labels = self.config.get_value( - value="can-be-merged-required-labels", return_on_none=[], extra_dict=repository_config + value="can-be-merged-required-labels", + return_on_none=[], + extra_dict=repository_config, ) self.conventional_title: str = self.config.get_value(value="conventional-title", extra_dict=repository_config) self.set_auto_merge_prs: list[str] = self.config.get_value( @@ -479,7 +484,8 @@ def _issue_on_error(_error: str) -> None: return _issue_on_error(_error=_error) rc, out, err = run_command( - command=f"uv {uv_cmd_dir} build --sdist --out-dir {_dist_dir}", log_prefix=self.log_prefix + command=f"uv {uv_cmd_dir} build --sdist --out-dir {_dist_dir}", + log_prefix=self.log_prefix, ) if not rc: _error = self.get_check_run_text(out=out, err=err) @@ -806,7 +812,10 @@ def process_pull_request_webhook_data(self) -> None: if hook_action == "opened": welcome_msg = self._prepare_welcome_comment() pull_request_opened_futures.append( - executor.submit(self.pull_request.create_issue_comment, **{"body": welcome_msg}) + executor.submit( + self.pull_request.create_issue_comment, + **{"body": welcome_msg}, + ) ) pull_request_opened_futures.append(executor.submit(self.create_issue_for_new_pull_request)) pull_request_opened_futures.append(executor.submit(self.set_wip_label_based_on_title)) @@ -936,9 +945,16 @@ def manage_reviewed_by_label(self, review_state: str, action: str, reviewed_user label_prefix: str = "" label_to_remove: str = "" - if review_state == APPROVE_STR and reviewed_user in self.all_approvers: - label_prefix = APPROVED_BY_LABEL_PREFIX - label_to_remove = f"{CHANGED_REQUESTED_BY_LABEL_PREFIX}{reviewed_user}" + if review_state == APPROVE_STR: + if reviewed_user in self.all_approvers: + label_prefix = APPROVED_BY_LABEL_PREFIX + label_to_remove = f"{CHANGED_REQUESTED_BY_LABEL_PREFIX}{reviewed_user}" + + else: + self.logger.warning( + f"{self.log_prefix} {reviewed_user} not in approvers list, will not {action} label." + ) + return elif review_state in ("approved", LGTM_STR): if base_dict := self.hook_data.get("issue", self.hook_data.get("pull_request")): @@ -1083,7 +1099,9 @@ def user_commands(self, command: str, reviewed_user: str, issue_comment_id: int) elif _command == COMMAND_CHERRY_PICK_STR: self.process_cherry_pick_command( - issue_comment_id=issue_comment_id, command_args=_args, reviewed_user=reviewed_user + issue_comment_id=issue_comment_id, + command_args=_args, + reviewed_user=reviewed_user, ) elif _command == COMMAND_RETEST_STR: @@ -1277,7 +1295,8 @@ def check_if_can_be_merged(self) -> None: failure_output += labels_failure_output required_check_failed_failure_output = self._required_check_failed( - last_commit_check_runs=last_commit_check_runs, check_runs_in_progress=check_runs_in_progress + last_commit_check_runs=last_commit_check_runs, + check_runs_in_progress=check_runs_in_progress, ) if required_check_failed_failure_output: failure_output += required_check_failed_failure_output @@ -1592,13 +1611,15 @@ def _prepare_cloned_repo_dir( ) try: rc, out, err = run_command( - command=f"{git_cmd} config user.name '{self.repository.owner.login}'", log_prefix=self.log_prefix + command=f"{git_cmd} config user.name '{self.repository.owner.login}'", + log_prefix=self.log_prefix, ) if not rc: yield rc, out, err rc, out, err = run_command( - f"{git_cmd} config user.email '{self.repository.owner.email}'", log_prefix=self.log_prefix + f"{git_cmd} config user.email '{self.repository.owner.email}'", + log_prefix=self.log_prefix, ) if not rc: yield rc, out, err @@ -1632,13 +1653,17 @@ def _prepare_cloned_repo_dir( else: if is_merged: rc, out, err = run_command( - command=f"{git_cmd} checkout {self.pull_request_branch}", log_prefix=self.log_prefix + command=f"{git_cmd} checkout {self.pull_request_branch}", + log_prefix=self.log_prefix, ) if not rc: yield rc, out, err elif tag_name: - rc, out, err = run_command(command=f"{git_cmd} checkout {tag_name}", log_prefix=self.log_prefix) + rc, out, err = run_command( + command=f"{git_cmd} checkout {tag_name}", + log_prefix=self.log_prefix, + ) if not rc: yield rc, out, err @@ -1647,7 +1672,8 @@ def _prepare_cloned_repo_dir( try: pull_request = self._get_pull_request() rc, out, err = run_command( - command=f"{git_cmd} checkout origin/pr/{pull_request.number}", log_prefix=self.log_prefix + command=f"{git_cmd} checkout origin/pr/{pull_request.number}", + log_prefix=self.log_prefix, ) if not rc: yield rc, out, err @@ -2059,7 +2085,10 @@ def _required_check_in_progress(self, last_commit_check_runs: list[CheckRun]) -> f"{self.log_prefix} Some required check runs in progress {check_runs_in_progress}, " f"skipping check if {CAN_BE_MERGED_STR}." ) - return f"Some required check runs in progress {', '.join(check_runs_in_progress)}\n", check_runs_in_progress + return ( + f"Some required check runs in progress {', '.join(check_runs_in_progress)}\n", + check_runs_in_progress, + ) return "", [] def _required_check_failed(self, last_commit_check_runs: list[CheckRun], check_runs_in_progress: list[str]) -> str: From 8205055b7e043edc7bb59501347a96035a266687 Mon Sep 17 00:00:00 2001 From: rnetser Date: Wed, 7 May 2025 18:51:38 +0300 Subject: [PATCH 3/4] add log if user not in approvers --- webhook_server/libs/github_api.py | 48 +++++++++---------------------- 1 file changed, 13 insertions(+), 35 deletions(-) diff --git a/webhook_server/libs/github_api.py b/webhook_server/libs/github_api.py index 67add13f..7919ca63 100644 --- a/webhook_server/libs/github_api.py +++ b/webhook_server/libs/github_api.py @@ -112,8 +112,7 @@ def __init__(self, hook_data: dict[Any, Any], headers: Headers, logger: logging. self.repository = get_github_repo_api(github_api=self.github_api, repository=self.repository_full_name) # Once we have a repository, we can get the config from .github-webhook-server.yaml local_repository_config = self.config.repository_local_data( - github_api=self.github_api, - repository_full_name=self.repository_full_name, + github_api=self.github_api, repository_full_name=self.repository_full_name ) # Call _repo_data_from_config() again to update self args from .github-webhook-server.yaml self._repo_data_from_config(repository_config=local_repository_config) @@ -333,14 +332,10 @@ def _repo_data_from_config(self, repository_config: dict[str, Any]) -> None: ) self.auto_verified_and_merged_users: list[str] = self.config.get_value( - value="auto-verified-and-merged-users", - return_on_none=[], - extra_dict=repository_config, + value="auto-verified-and-merged-users", return_on_none=[], extra_dict=repository_config ) self.can_be_merged_required_labels = self.config.get_value( - value="can-be-merged-required-labels", - return_on_none=[], - extra_dict=repository_config, + value="can-be-merged-required-labels", return_on_none=[], extra_dict=repository_config ) self.conventional_title: str = self.config.get_value(value="conventional-title", extra_dict=repository_config) self.set_auto_merge_prs: list[str] = self.config.get_value( @@ -484,8 +479,7 @@ def _issue_on_error(_error: str) -> None: return _issue_on_error(_error=_error) rc, out, err = run_command( - command=f"uv {uv_cmd_dir} build --sdist --out-dir {_dist_dir}", - log_prefix=self.log_prefix, + command=f"uv {uv_cmd_dir} build --sdist --out-dir {_dist_dir}", log_prefix=self.log_prefix ) if not rc: _error = self.get_check_run_text(out=out, err=err) @@ -812,10 +806,7 @@ def process_pull_request_webhook_data(self) -> None: if hook_action == "opened": welcome_msg = self._prepare_welcome_comment() pull_request_opened_futures.append( - executor.submit( - self.pull_request.create_issue_comment, - **{"body": welcome_msg}, - ) + executor.submit(self.pull_request.create_issue_comment, **{"body": welcome_msg}) ) pull_request_opened_futures.append(executor.submit(self.create_issue_for_new_pull_request)) pull_request_opened_futures.append(executor.submit(self.set_wip_label_based_on_title)) @@ -1099,9 +1090,7 @@ def user_commands(self, command: str, reviewed_user: str, issue_comment_id: int) elif _command == COMMAND_CHERRY_PICK_STR: self.process_cherry_pick_command( - issue_comment_id=issue_comment_id, - command_args=_args, - reviewed_user=reviewed_user, + issue_comment_id=issue_comment_id, command_args=_args, reviewed_user=reviewed_user ) elif _command == COMMAND_RETEST_STR: @@ -1295,8 +1284,7 @@ def check_if_can_be_merged(self) -> None: failure_output += labels_failure_output required_check_failed_failure_output = self._required_check_failed( - last_commit_check_runs=last_commit_check_runs, - check_runs_in_progress=check_runs_in_progress, + last_commit_check_runs=last_commit_check_runs, check_runs_in_progress=check_runs_in_progress ) if required_check_failed_failure_output: failure_output += required_check_failed_failure_output @@ -1611,15 +1599,13 @@ def _prepare_cloned_repo_dir( ) try: rc, out, err = run_command( - command=f"{git_cmd} config user.name '{self.repository.owner.login}'", - log_prefix=self.log_prefix, + command=f"{git_cmd} config user.name '{self.repository.owner.login}'", log_prefix=self.log_prefix ) if not rc: yield rc, out, err rc, out, err = run_command( - f"{git_cmd} config user.email '{self.repository.owner.email}'", - log_prefix=self.log_prefix, + f"{git_cmd} config user.email '{self.repository.owner.email}'", log_prefix=self.log_prefix ) if not rc: yield rc, out, err @@ -1653,17 +1639,13 @@ def _prepare_cloned_repo_dir( else: if is_merged: rc, out, err = run_command( - command=f"{git_cmd} checkout {self.pull_request_branch}", - log_prefix=self.log_prefix, + command=f"{git_cmd} checkout {self.pull_request_branch}", log_prefix=self.log_prefix ) if not rc: yield rc, out, err elif tag_name: - rc, out, err = run_command( - command=f"{git_cmd} checkout {tag_name}", - log_prefix=self.log_prefix, - ) + rc, out, err = run_command(command=f"{git_cmd} checkout {tag_name}", log_prefix=self.log_prefix) if not rc: yield rc, out, err @@ -1672,8 +1654,7 @@ def _prepare_cloned_repo_dir( try: pull_request = self._get_pull_request() rc, out, err = run_command( - command=f"{git_cmd} checkout origin/pr/{pull_request.number}", - log_prefix=self.log_prefix, + command=f"{git_cmd} checkout origin/pr/{pull_request.number}", log_prefix=self.log_prefix ) if not rc: yield rc, out, err @@ -2085,10 +2066,7 @@ def _required_check_in_progress(self, last_commit_check_runs: list[CheckRun]) -> f"{self.log_prefix} Some required check runs in progress {check_runs_in_progress}, " f"skipping check if {CAN_BE_MERGED_STR}." ) - return ( - f"Some required check runs in progress {', '.join(check_runs_in_progress)}\n", - check_runs_in_progress, - ) + return f"Some required check runs in progress {', '.join(check_runs_in_progress)}\n", check_runs_in_progress return "", [] def _required_check_failed(self, last_commit_check_runs: list[CheckRun], check_runs_in_progress: list[str]) -> str: From 036854a8e014d0e9151ac33690f8548bdb452076 Mon Sep 17 00:00:00 2001 From: rnetser Date: Thu, 8 May 2025 09:21:26 +0300 Subject: [PATCH 4/4] update log level to debug --- webhook_server/libs/github_api.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/webhook_server/libs/github_api.py b/webhook_server/libs/github_api.py index 7919ca63..76015240 100644 --- a/webhook_server/libs/github_api.py +++ b/webhook_server/libs/github_api.py @@ -942,9 +942,7 @@ def manage_reviewed_by_label(self, review_state: str, action: str, reviewed_user label_to_remove = f"{CHANGED_REQUESTED_BY_LABEL_PREFIX}{reviewed_user}" else: - self.logger.warning( - f"{self.log_prefix} {reviewed_user} not in approvers list, will not {action} label." - ) + self.logger.debug(f"{self.log_prefix} {reviewed_user} not in approvers list, will not {action} label.") return elif review_state in ("approved", LGTM_STR):