From 8cca976e3dad5fd41602ad7b75f1f570c481004d Mon Sep 17 00:00:00 2001 From: Meni Yakove Date: Tue, 8 Oct 2024 11:58:13 +0300 Subject: [PATCH 1/3] check if pr is already set to automerge before enable --- .pre-commit-config.yaml | 2 +- webhook_server_container/libs/github_api.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c2f3e2ac..aee9052c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -42,7 +42,7 @@ repos: - id: ruff-format - repo: https://github.com/gitleaks/gitleaks - rev: v8.20.1 + rev: v8.20.0 hooks: - id: gitleaks diff --git a/webhook_server_container/libs/github_api.py b/webhook_server_container/libs/github_api.py index cc96005b..56ccf204 100644 --- a/webhook_server_container/libs/github_api.py +++ b/webhook_server_container/libs/github_api.py @@ -1952,9 +1952,12 @@ def add_pull_request_owner_as_assingee(self) -> None: def set_pull_request_automerge(self) -> None: if self.parent_committer in self.auto_verified_and_merged_users: - self.logger.info( - f"{self.log_prefix} will be merged automatically. owner: {self.parent_committer} " - f"is part of {self.auto_verified_and_merged_users}" - ) + if not self.pull_request.raw_data.get("auto_merge"): + self.logger.info( + f"{self.log_prefix} will be merged automatically. owner: {self.parent_committer} " + f"is part of auto merge enabled users" + ) - self.pull_request.enable_automerge(merge_method="SQUASH") + self.pull_request.enable_automerge(merge_method="SQUASH") + else: + self.logger.debug(f"{self.log_prefix} is already set to auto merge") From 9d7226771453bc250eeb2a326de87a1ab7848846 Mon Sep 17 00:00:00 2001 From: Meni Yakove Date: Tue, 8 Oct 2024 12:14:40 +0300 Subject: [PATCH 2/3] do not raise if label not exists in remove label --- webhook_server_container/libs/github_api.py | 23 +++++++-------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/webhook_server_container/libs/github_api.py b/webhook_server_container/libs/github_api.py index 56ccf204..8055d7de 100644 --- a/webhook_server_container/libs/github_api.py +++ b/webhook_server_container/libs/github_api.py @@ -443,10 +443,14 @@ def skip_if_pull_request_already_merged(self) -> bool: return False def _remove_label(self, label: str) -> bool: - if self.label_exists_in_pull_request(label=label): - self.logger.info(f"{self.log_prefix} Removing label {label}") - self.pull_request.remove_from_labels(label) - return self.wait_for_label(label=label, exists=False) + try: + if self.label_exists_in_pull_request(label=label): + self.logger.info(f"{self.log_prefix} Removing label {label}") + self.pull_request.remove_from_labels(label) + return self.wait_for_label(label=label, exists=False) + except Exception as exp: + self.logger.debug(f"{self.log_prefix} Failed to remove {label} label. Exception: {exp}") + return False self.logger.debug(f"{self.log_prefix} Label {label} not found and cannot be removed") return False @@ -1363,17 +1367,6 @@ def check_if_can_be_merged(self) -> None: if pr_approved and not failure_output: self._add_label(label=CAN_BE_MERGED_STR) self.set_merge_check_success() - # if self.parent_committer in self.auto_verified_and_merged_users: - # self.logger.info( - # f"{self.log_prefix} will be merged automatically. owner: {self.parent_committer} " - # f"is part of {self.auto_verified_and_merged_users}" - # ) - # self.pull_request.create_issue_comment( - # f"Owner of the pull request {self.parent_committer} " - # f"is part of:\n`{self.auto_verified_and_merged_users}`\n" - # "Pull request is merged automatically." - # ) - # self.pull_request.merge(merge_method="squash") self.logger.info(f"{self.log_prefix} Pull request can be merged") return From 2c1eec892077ae7dc9ba75b7ff0a516545a5953d Mon Sep 17 00:00:00 2001 From: Meni Yakove Date: Tue, 8 Oct 2024 12:19:52 +0300 Subject: [PATCH 3/3] set_pull_request_automerge: do not fail on exception --- webhook_server_container/libs/github_api.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/webhook_server_container/libs/github_api.py b/webhook_server_container/libs/github_api.py index 8055d7de..4bacb881 100644 --- a/webhook_server_container/libs/github_api.py +++ b/webhook_server_container/libs/github_api.py @@ -1945,12 +1945,16 @@ def add_pull_request_owner_as_assingee(self) -> None: def set_pull_request_automerge(self) -> None: if self.parent_committer in self.auto_verified_and_merged_users: - if not self.pull_request.raw_data.get("auto_merge"): - self.logger.info( - f"{self.log_prefix} will be merged automatically. owner: {self.parent_committer} " - f"is part of auto merge enabled users" - ) + try: + if not self.pull_request.raw_data.get("auto_merge"): + self.logger.info( + f"{self.log_prefix} will be merged automatically. owner: {self.parent_committer} " + f"is part of auto merge enabled users" + ) - self.pull_request.enable_automerge(merge_method="SQUASH") - else: - self.logger.debug(f"{self.log_prefix} is already set to auto merge") + self.pull_request.enable_automerge(merge_method="SQUASH") + else: + self.logger.debug(f"{self.log_prefix} is already set to auto merge") + + except Exception as exp: + self.logger.error(f"{self.log_prefix} Exception while setting auto merge: {exp}")