diff --git a/src/ci_providers/provider_githubactions.ts b/src/ci_providers/provider_githubactions.ts index ddf78714e..759d235a7 100644 --- a/src/ci_providers/provider_githubactions.ts +++ b/src/ci_providers/provider_githubactions.ts @@ -54,17 +54,12 @@ async function _getBuildURL(inputs: UploaderInputs): Promise { function _getBranch(inputs: UploaderInputs): string { const { args, envs } = inputs - const branchRegex = /refs\/heads\/(.*)/ - const branchMatches = branchRegex.exec(envs.GITHUB_REF || '') - let branch - if (branchMatches) { - branch = branchMatches[1] + const triggerName = envs.GITHUB_EVENT_NAME + if (triggerName == "pull_request" || triggerName == "pull_request_target") { + return args.branch || envs.GITHUB_REF || '' + } else { + return args.branch || envs.GITHUB_REF_NAME || '' } - - if (envs.GITHUB_HEAD_REF && envs.GITHUB_HEAD_REF !== '') { - branch = envs.GITHUB_HEAD_REF - } - return args.branch || branch || '' } function _getJob(envs: UploaderEnvs): string { @@ -138,6 +133,7 @@ export async function getServiceParams(inputs: UploaderInputs): Promise { args: { ...createEmptyArgs() }, envs: { GITHUB_ACTIONS: 'true', - GITHUB_REF: 'refs/heads/master', + GITHUB_REF_NAME: 'master', GITHUB_REPOSITORY: 'testOrg/testRepo', GITHUB_RUN_ID: '2', GITHUB_SERVER_URL: 'https://github.com', @@ -76,7 +76,7 @@ describe('GitHub Actions Params', () => { }) it('gets correct params for a PR', async () => { - const inputs: UploaderInputs = { + let inputs: UploaderInputs = { args: { ...createEmptyArgs() }, envs: { GITHUB_ACTIONS: 'true', @@ -87,10 +87,11 @@ describe('GitHub Actions Params', () => { GITHUB_SERVER_URL: 'https://github.com', GITHUB_SHA: 'testingsha', GITHUB_WORKFLOW: 'testWorkflow', + GITHUB_EVENT_NAME: 'pull_request', }, } const expected: IServiceParams = { - branch: 'branch', + branch: 'refs/pull/1/merge', build: '2', buildURL: 'https://github.com/testOrg/testRepo/actions/runs/2', commit: 'testingsha', @@ -100,13 +101,23 @@ describe('GitHub Actions Params', () => { slug: 'testOrg/testRepo', } - const spawnSync = td.replace(childProcess, 'spawnSync') + let spawnSync = td.replace(childProcess, 'spawnSync') td.when( spawnSync('git', ['show', '--no-patch', '--format=%P'], { maxBuffer: SPAWNPROCESSBUFFERSIZE }), ).thenReturn({ stdout: Buffer.from('testingsha'), }) - const params = await providerGitHubactions.getServiceParams(inputs) + let params = await providerGitHubactions.getServiceParams(inputs) + expect(params).toMatchObject(expected) + + inputs["envs"]["GITHUB_EVENT_NAME"] = 'pull_request_target' + spawnSync = td.replace(childProcess, 'spawnSync') + td.when( + spawnSync('git', ['show', '--no-patch', '--format=%P'], { maxBuffer: SPAWNPROCESSBUFFERSIZE }), + ).thenReturn({ + stdout: 'testingsha', + }) + params = await providerGitHubactions.getServiceParams(inputs) expect(params).toMatchObject(expected) }) @@ -123,10 +134,11 @@ describe('GitHub Actions Params', () => { GITHUB_SERVER_URL: 'https://github.com', GITHUB_SHA: 'testingsha', GITHUB_WORKFLOW: 'testWorkflow', + GITHUB_EVENT_NAME: 'pull_request', }, } const expected: IServiceParams = { - branch: 'branch', + branch: 'refs/pull/1/merge', build: '2', buildURL: 'https://github.com/testOrg/testRepo/actions/runs/2', commit: 'testingsha', @@ -182,10 +194,11 @@ describe('GitHub Actions Params', () => { GITHUB_SERVER_URL: 'https://github.com', GITHUB_SHA: 'testingsha', GITHUB_WORKFLOW: 'testWorkflow', + GITHUB_EVENT_NAME: 'pull_request', }, } const expected: IServiceParams = { - branch: 'branch', + branch: 'refs/pull/1/merge', build: '2', buildURL: 'https://github.com/testOrg/testRepo/actions/runs/2/jobs/2', commit: 'testingsha', @@ -240,10 +253,11 @@ describe('GitHub Actions Params', () => { GITHUB_SERVER_URL: 'https://github.com', GITHUB_SHA: 'testingmergecommitsha', GITHUB_WORKFLOW: 'testWorkflow', + GITHUB_EVENT_NAME: 'pull_request', }, } const expected: IServiceParams = { - branch: 'branch', + branch: 'refs/pull/1/merge', build: '2', buildURL: 'https://github.com/testOrg/testRepo/actions/runs/2', commit: 'testingmergecommitsha2345678901234567890', @@ -312,10 +326,11 @@ describe('GitHub Actions Params', () => { GITHUB_SERVER_URL: 'https://github.com', GITHUB_SHA: 'testingsha', GITHUB_WORKFLOW: 'testWorkflow', + GITHUB_EVENT_NAME: 'pull_request', }, } const expected: IServiceParams = { - branch: 'branch', + branch: 'refs/pull/1/merge', build: '2', buildURL: 'https://github.com/testOrg/testRepo/actions/runs/2', commit: 'testingsha',