Skip to content

Commit 3163582

Browse files
authored
Merge pull request #31 from mimo-x/fix_gitlab_new_mr
修复 Gitlab 不同版本 mr 请求区别
2 parents 980cd34 + 77d5be0 commit 3163582

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

gitlab_integration/gitlab_fetcher.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ def get_info(self):
129129
if response.status_code == 200:
130130
return response.json()
131131
else:
132+
log.error(f"获取项目信息失败: {response.status_code} {response.text}")
132133
return None
133134

134135
@retry(stop_max_attempt_number=3, wait_fixed=2000)
@@ -202,4 +203,16 @@ def _build_authenticated_url(self, repo_url):
202203
elif repo_url.startswith("http://"):
203204
return f"http://oauth2:{token}@{repo_url[7:]}"
204205
else:
205-
raise ValueError("Unsupported URL scheme")
206+
raise ValueError("Unsupported URL scheme")
207+
208+
def is_merge_request_opened(gitlab_payload) -> bool:
209+
"""
210+
判断是否是merge request打开事件
211+
"""
212+
try:
213+
gitlab_merge_request_old = gitlab_payload.get("object_attributes").get("state") == "opened" and gitlab_payload.get("object_attributes").get("merge_status") == "preparing"
214+
gitlab_merge_request_new = gitlab_payload.get("object_attributes").get("state") == "merged" and gitlab_payload.get("object_attributes").get("merge_status") == "can_be_merged"
215+
return gitlab_merge_request_old or gitlab_merge_request_new
216+
except Exception as e:
217+
log.error(f"判断是否是merge request打开事件失败: {e}")
218+
return False

gitlab_integration/webhook_listener.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from response_module.response_controller import ReviewResponse
88
from review_engine.review_engine import ReviewEngine
99
from utils.logger import log
10-
10+
from gitlab_integration.gitlab_fetcher import is_merge_request_opened
1111

1212
class WebhookListener:
1313
def __init__(self):
@@ -53,7 +53,7 @@ def handle_merge_request(self, gitlab_payload, reply):
5353
"""
5454
处理合并请求事件
5555
"""
56-
if gitlab_payload.get("object_attributes").get("state") == "opened" and gitlab_payload.get("object_attributes").get("merge_status") == "preparing":
56+
if is_merge_request_opened(gitlab_payload):
5757
log.info("首次merge_request ", gitlab_payload)
5858
project_id = gitlab_payload.get('project')['id']
5959
merge_request_iid = gitlab_payload.get("object_attributes")["iid"]

review_engine/handler/default_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,6 @@ def default_handle(self, changes, merge_info, hook_info, reply, model):
126126

127127
else:
128128
log.error(f"获取merge_request信息失败,project_id: {hook_info['project']['id']} |"
129-
f" merge_iid: {hook_info['object_attributes']['iid']}")
129+
f" merge_iid: {hook_info['object_attributes']['iid']} | merge_info: {merge_info}")
130130

131131

0 commit comments

Comments
 (0)