Skip to content

Commit

Permalink
Use correct SHA for pull request events
Browse files Browse the repository at this point in the history
In a pull request, GITHUB_SHA is set to the "last merge commit on the GITHUB_REF branch".
This isn't the correct value to use when generating a dependency graph.
This changes to use the value of `pull_request.head.sha`, which is the correct
value for a dependency graph.

Fixes #882
  • Loading branch information
bigdaz committed Sep 26, 2023
1 parent 4441c9f commit 87ccc98
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 5 deletions.
11 changes: 11 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
"@actions/http-client": "2.1.1",
"@actions/tool-cache": "2.0.1",
"@octokit/rest": "19.0.13",
"@octokit/webhooks-types": "7.3.0",
"string-argv": "0.3.2"
},
"devDependencies": {
Expand All @@ -52,7 +53,7 @@
"eslint-plugin-jest": "27.4.0",
"eslint-plugin-prettier": "5.0.0",
"jest": "29.7.0",
"js-yaml": "4.1.0",
"js-yaml": "4.1.0",
"patch-package": "8.0.0",
"prettier": "3.0.3",
"ts-jest": "29.1.1",
Expand Down
27 changes: 23 additions & 4 deletions src/dependency-graph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import * as github from '@actions/github'
import * as glob from '@actions/glob'
import * as toolCache from '@actions/tool-cache'
import {GitHub} from '@actions/github/lib/utils'
import type {PullRequestEvent} from '@octokit/webhooks-types'

import * as path from 'path'
import fs from 'fs'
Expand All @@ -19,12 +20,11 @@ export function setup(option: DependencyGraphOption): void {
}

core.info('Enabling dependency graph generation')
const jobCorrelator = getJobCorrelator()
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'true')
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR', jobCorrelator)
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR', getJobCorrelator())
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_ID', github.context.runId)
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_REF', github.context.ref)
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_SHA', github.context.sha)
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_SHA', getShaFromContext())
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_WORKSPACE', layout.workspaceDirectory())
core.exportVariable(
'DEPENDENCY_GRAPH_REPORT_DIR',
Expand Down Expand Up @@ -152,7 +152,26 @@ function getRelativePathFromWorkspace(file: string): string {
return path.relative(workspaceDirectory, file)
}

export function getJobCorrelator(): string {
function getShaFromContext(): string {
const context = github.context
const pullRequestEvents = [
'pull_request',
'pull_request_comment',
'pull_request_review',
'pull_request_review_comment'
// Note that pull_request_target is omitted here.
// That event runs in the context of the base commit of the PR,
// so the snapshot should not be associated with the head commit.
]
if (pullRequestEvents.includes(context.eventName)) {
const pr = (context.payload as PullRequestEvent).pull_request
return pr.head.sha
} else {
return context.sha
}
}

function getJobCorrelator(): string {
return constructJobCorrelator(github.context.workflow, github.context.job, getJobMatrix())
}

Expand Down

0 comments on commit 87ccc98

Please sign in to comment.