auto-sync: 2026-06-07 22:17:49
Deploy / ci (push) Waiting to run
Deploy / deploy (push) Blocked by required conditions
Deploy / notify-deploy-failure (push) Blocked by required conditions

This commit is contained in:
cfdaily
2026-06-07 22:17:49 +08:00
parent be21de0aeb
commit 9398f6c6e3
+30 -6
View File
@@ -224,7 +224,10 @@ async def _handle_pull_request(payload: Dict[str, Any]) -> None:
if action != "opened":
return
pr = payload.get("pull_request") or {}
pr = payload.get("pull_request")
if not pr or not isinstance(pr, dict):
logger.warning("pull_request event missing pull_request field, skipping")
return
repo = _repo_fullname(payload)
pr_number = pr.get("number", 0)
pr_title = pr.get("title", "")
@@ -252,14 +255,20 @@ async def _handle_pull_request(payload: Dict[str, Any]) -> None:
async def _handle_pull_request_review(payload: Dict[str, Any]) -> None:
"""处理 pull_request_review 事件:非 COMMENTED → 通知 PR 作者。"""
review = payload.get("review") or {}
review = payload.get("review")
if not review or not isinstance(review, dict):
logger.warning("pull_request_review event missing review field, skipping")
return
pr = payload.get("pull_request")
if not pr or not isinstance(pr, dict):
logger.warning("pull_request_review event missing pull_request field, skipping")
return
state = review.get("state", "")
# 只通知 APPROVED 和 REQUEST_CHANGES,跳过 COMMENTED 和其他状态
if state == "COMMENTED":
return
pr = payload.get("pull_request") or {}
repo = _repo_fullname(payload)
pr_number = pr.get("number", 0)
pr_title = pr.get("title", "")
@@ -288,7 +297,10 @@ async def _handle_pull_request_review(payload: Dict[str, Any]) -> None:
async def _handle_issues(payload: Dict[str, Any]) -> None:
"""处理 issues 事件:assigned → 通知被指派人;opened+部署失败 → 通知运维。"""
action = payload.get("action", "")
issue = payload.get("issue") or {}
issue = payload.get("issue")
if not issue or not isinstance(issue, dict):
logger.warning("issues event missing issue field, skipping")
return
repo = _repo_fullname(payload)
issue_number = issue.get("number", 0)
issue_title = issue.get("title", "")
@@ -296,8 +308,14 @@ async def _handle_issues(payload: Dict[str, Any]) -> None:
if action == "assigned":
assignee = ""
assignees = issue.get("assignees") or []
if not assignees:
single = issue.get("assignee")
if single and isinstance(single, dict):
assignees = [single]
if assignees:
assignee = assignees[-1].get("login", "")
else:
assignee = ""
if not assignee:
logger.debug("Issue assigned but no assignee found, skipping")
return
@@ -336,14 +354,20 @@ async def _handle_issues(payload: Dict[str, Any]) -> None:
async def _handle_issue_comment(payload: Dict[str, Any]) -> None:
"""处理 issue_comment 事件:CI 失败关键词 → 通知 PR 作者。"""
comment = payload.get("comment") or {}
comment = payload.get("comment")
if not comment or not isinstance(comment, dict):
logger.warning("issue_comment event missing comment field, skipping")
return
body = comment.get("body", "")
# 检查是否包含 CI 失败关键词
if "[CI]" not in body and "CI 失败" not in body:
return
issue = payload.get("issue") or {}
issue = payload.get("issue")
if not issue or not isinstance(issue, dict):
logger.warning("issue_comment event missing issue field, skipping")
return
repo = _repo_fullname(payload)
issue_number = issue.get("number", 0)