From 386854a5d35b67ff174d5cded925af78ca7eb305 Mon Sep 17 00:00:00 2001 From: Alexandre Zollinger Chohfi Date: Fri, 7 Nov 2025 11:45:11 -0800 Subject: [PATCH] Refactor getCheckRunContext to improve SHA resolution from workflow_run events --- src/utils/github-utils.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/utils/github-utils.ts b/src/utils/github-utils.ts index 4f9ee51..8dca8fd 100644 --- a/src/utils/github-utils.ts +++ b/src/utils/github-utils.ts @@ -6,6 +6,8 @@ import * as github from '@actions/github' import {GitHub} from '@actions/github/lib/utils' import type {PullRequest, WorkflowRunEvent} from '@octokit/webhooks-types' +type WorkflowRunPR = WorkflowRunEvent['workflow_run']['pull_requests'][number] + export function getCheckRunContext(): {sha: string; runId: number} { if (github.context.eventName === 'workflow_run') { core.info('Action was triggered by workflow_run: using SHA and RUN_ID from triggering workflow') @@ -13,8 +15,15 @@ export function getCheckRunContext(): {sha: string; runId: number} { if (!event.workflow_run) { throw new Error("Event of type 'workflow_run' is missing 'workflow_run' field") } + const prs = (event.workflow_run.pull_requests ?? []) as WorkflowRunPR[] + const prShaMatch = prs.find(pr => pr.head?.ref === event.workflow_run.head_branch)?.head?.sha + const prShaFirst = prs[0]?.head?.sha + const sha = prShaMatch ?? prShaFirst ?? event.workflow_run.head_sha + if (!sha) { + throw new Error('Unable to resolve SHA from workflow_run (no PR head.sha or head_sha)') + } return { - sha: event.workflow_run.head_commit.id, + sha, runId: event.workflow_run.id } }