diff --git a/tools/gate-check-v3/gate_check.py b/tools/gate-check-v3/gate_check.py index 429c2b40..0d8fa24f 100644 --- a/tools/gate-check-v3/gate_check.py +++ b/tools/gate-check-v3/gate_check.py @@ -498,21 +498,25 @@ def run(repo: str, pr_number: int, post_comment: bool = False) -> dict: "Content-Type": "application/json", "Accept": "application/json", } - # Check if a gate-check comment already exists to avoid spamming - existing = api_list(f"/repos/{owner}/{name}/issues/{pr_number}/comments") - our_comments = [c for c in existing if "[gate-check-v3]" in (c.get("body") or "")] - if our_comments: - # Update latest - comment_id = our_comments[-1]["id"] - url = f"{API_BASE}/repos/{owner}/{name}/issues/comments/{comment_id}" - req = urllib.request.Request(url, data=json.dumps({"body": comment_body}).encode(), headers=headers, method="PATCH") - with urllib.request.urlopen(req) as r: - r.read() - else: - url = f"{API_BASE}/repos/{owner}/{name}/issues/{pr_number}/comments" - req = urllib.request.Request(url, data=json.dumps({"body": comment_body}).encode(), headers=headers, method="POST") - with urllib.request.urlopen(req) as r: - r.read() + try: + # Check if a gate-check comment already exists to avoid spamming + existing = api_list(f"/repos/{owner}/{name}/issues/{pr_number}/comments") + our_comments = [c for c in existing if "[gate-check-v3]" in (c.get("body") or "")] + if our_comments: + # Update latest + comment_id = our_comments[-1]["id"] + url = f"{API_BASE}/repos/{owner}/{name}/issues/comments/{comment_id}" + req = urllib.request.Request(url, data=json.dumps({"body": comment_body}).encode(), headers=headers, method="PATCH") + with urllib.request.urlopen(req) as r: + r.read() + else: + url = f"{API_BASE}/repos/{owner}/{name}/issues/{pr_number}/comments" + req = urllib.request.Request(url, data=json.dumps({"body": comment_body}).encode(), headers=headers, method="POST") + with urllib.request.urlopen(req) as r: + r.read() + except urllib.error.HTTPError as e: + # Non-fatal: token may lack write:repository. Verdict is already computed. + print(f"Warning: could not post comment (HTTP {e.code}) — token may lack write:repository permission", file=sys.stderr) return result