Skip to content

Commit ac34338

Browse files
committed
fix: get PR number from event payload on pull_request_target
1 parent d95e5e3 commit ac34338

1 file changed

Lines changed: 27 additions & 6 deletions

File tree

main.py

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,31 @@ def is_fork_pr_with_readonly_token() -> bool:
273273
return is_fork_pr() and os.getenv("GITHUB_EVENT_NAME", "") != "pull_request_target"
274274

275275

276+
def get_pr_number() -> int:
277+
"""Extract the pull request number from event payload or GITHUB_REF.
278+
279+
For pull_request: GITHUB_REF is refs/pull/<number>/merge
280+
For pull_request_target: GITHUB_REF is refs/heads/<branch> (not useful),
281+
so we fall back to the event payload.
282+
"""
283+
ref = os.getenv("GITHUB_REF", "")
284+
parts = ref.split("/")
285+
if len(parts) >= 4 and parts[1] == "pull":
286+
return int(parts[2])
287+
# Fallback: read PR number from event payload
288+
event_path = os.getenv("GITHUB_EVENT_PATH")
289+
if event_path:
290+
try:
291+
with open(event_path, "r") as f:
292+
event = json.load(f)
293+
number = event.get("number") or (event.get("pull_request", {}) or {}).get("number")
294+
if number:
295+
return int(number)
296+
except Exception:
297+
pass
298+
raise ValueError("Unable to determine PR number from GITHUB_REF or GITHUB_EVENT_PATH")
299+
300+
276301
def add_pr_comments() -> int:
277302
"""Posts the commit check result as a comment on the pull request."""
278303
if not PR_COMMENTS_ENABLED:
@@ -309,18 +334,14 @@ def add_pr_comments() -> int:
309334

310335
token = os.getenv("GITHUB_TOKEN")
311336
repo_name = os.getenv("GITHUB_REPOSITORY")
312-
pr_number = os.getenv("GITHUB_REF")
313-
if pr_number is not None:
314-
pr_number = pr_number.split("/")[-2]
315-
else:
316-
raise ValueError("GITHUB_REF environment variable is not set")
337+
pr_number = get_pr_number()
317338

318339
if not token:
319340
raise ValueError("GITHUB_TOKEN is not set")
320341

321342
g = Github(auth=Auth.Token(token))
322343
repo = g.get_repo(repo_name)
323-
pull_request = repo.get_issue(int(pr_number))
344+
pull_request = repo.get_issue(pr_number)
324345

325346
result_text = read_result_file()
326347
pr_comment_body = build_result_body(result_text)

0 commit comments

Comments
 (0)