diff --git a/index.js b/index.js index 3f80f5910..b9ea0ca45 100644 --- a/index.js +++ b/index.js @@ -29,9 +29,9 @@ async function assumeRole(params) { "Missing required input when assuming a Role." ); - const {GITHUB_REPOSITORY, GITHUB_WORKFLOW, GITHUB_ACTION, GITHUB_ACTOR, GITHUB_REF, GITHUB_SHA} = process.env; + const {GITHUB_REPOSITORY, GITHUB_WORKFLOW, GITHUB_ACTION, GITHUB_ACTOR, GITHUB_SHA} = process.env; assert( - [GITHUB_REPOSITORY, GITHUB_WORKFLOW, GITHUB_ACTION, GITHUB_ACTOR, GITHUB_REF, GITHUB_SHA].every(isDefined), + [GITHUB_REPOSITORY, GITHUB_WORKFLOW, GITHUB_ACTION, GITHUB_ACTOR, GITHUB_SHA].every(isDefined), 'Missing required environment value. Are you running in GitHub Actions?' ); @@ -48,10 +48,13 @@ async function assumeRole(params) { {Key: 'Workflow', Value: sanitizeGithubWorkflowName(GITHUB_WORKFLOW)}, {Key: 'Action', Value: GITHUB_ACTION}, {Key: 'Actor', Value: sanitizeGithubActor(GITHUB_ACTOR)}, - {Key: 'Branch', Value: GITHUB_REF}, {Key: 'Commit', Value: GITHUB_SHA}, ]; + if (isDefined(process.env.GITHUB_REF)) { + tagArray.push({Key: 'Branch', Value: process.env.GITHUB_REF}); + } + const roleSessionTags = roleSkipSessionTagging ? undefined : tagArray; const assumeRoleRequest = { diff --git a/index.test.js b/index.test.js index 4e26449e6..8fa322a29 100644 --- a/index.test.js +++ b/index.test.js @@ -22,8 +22,8 @@ const ENVIRONMENT_VARIABLE_OVERRIDES = { GITHUB_WORKFLOW: 'MY-WORKFLOW-ID', GITHUB_ACTION: 'MY-ACTION-NAME', GITHUB_ACTOR: 'MY-USERNAME[bot]', - GITHUB_REF: 'MY-BRANCH', GITHUB_SHA: 'MY-COMMIT-ID', + GITHUB_REF: 'MY-BRANCH', }; const GITHUB_ACTOR_SANITIZED = 'MY-USERNAME_bot_' @@ -142,6 +142,26 @@ describe('Configure AWS Credentials', () => { expect(core.setSecret).toHaveBeenCalledWith(FAKE_ACCOUNT_ID); }); + test('action fails when github env vars are not set', async () => { + process.env.SHOW_STACK_TRACE = 'false'; + core.getInput = jest + .fn() + .mockImplementation(mockGetInput(ASSUME_ROLE_INPUTS)); + delete process.env.GITHUB_SHA; + + await run(); + expect(core.setFailed).toHaveBeenCalledWith('Missing required environment value. Are you running in GitHub Actions?'); + }); + + test('action does not require GITHUB_REF env var', async () => { + core.getInput = jest + .fn() + .mockImplementation(mockGetInput(ASSUME_ROLE_INPUTS)); + delete process.env.GITHUB_REF; + + await run(); + }); + test('hosted runners can pull creds from a self-hosted environment', async () => { const mockInputs = {'aws-region': FAKE_REGION}; core.getInput = jest @@ -415,8 +435,8 @@ describe('Configure AWS Credentials', () => { {Key: 'Workflow', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_WORKFLOW}, {Key: 'Action', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_ACTION}, {Key: 'Actor', Value: GITHUB_ACTOR_SANITIZED}, - {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, {Key: 'Commit', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_SHA}, + {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, ] }) }); @@ -437,8 +457,8 @@ describe('Configure AWS Credentials', () => { {Key: 'Workflow', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_WORKFLOW}, {Key: 'Action', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_ACTION}, {Key: 'Actor', Value: GITHUB_ACTOR_SANITIZED}, - {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, {Key: 'Commit', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_SHA}, + {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, ] }) }); @@ -459,8 +479,8 @@ describe('Configure AWS Credentials', () => { {Key: 'Workflow', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_WORKFLOW}, {Key: 'Action', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_ACTION}, {Key: 'Actor', Value: GITHUB_ACTOR_SANITIZED}, - {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, {Key: 'Commit', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_SHA}, + {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, ] }) }); @@ -481,8 +501,8 @@ describe('Configure AWS Credentials', () => { {Key: 'Workflow', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_WORKFLOW}, {Key: 'Action', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_ACTION}, {Key: 'Actor', Value: GITHUB_ACTOR_SANITIZED}, - {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, {Key: 'Commit', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_SHA}, + {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, ] }) }); @@ -503,8 +523,8 @@ describe('Configure AWS Credentials', () => { {Key: 'Workflow', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_WORKFLOW}, {Key: 'Action', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_ACTION}, {Key: 'Actor', Value: GITHUB_ACTOR_SANITIZED}, - {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, {Key: 'Commit', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_SHA}, + {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, ], ExternalId: 'abcdef' }) @@ -530,8 +550,8 @@ describe('Configure AWS Credentials', () => { {Key: 'Workflow', Value: sanitizedWorkflowName}, {Key: 'Action', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_ACTION}, {Key: 'Actor', Value: GITHUB_ACTOR_SANITIZED}, - {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, {Key: 'Commit', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_SHA}, + {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, ] }) }); @@ -566,8 +586,8 @@ describe('Configure AWS Credentials', () => { {Key: 'Workflow', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_WORKFLOW}, {Key: 'Action', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_ACTION}, {Key: 'Actor', Value: GITHUB_ACTOR_SANITIZED}, - {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, {Key: 'Commit', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_SHA}, + {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, ] }) }); @@ -588,8 +608,8 @@ describe('Configure AWS Credentials', () => { {Key: 'Workflow', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_WORKFLOW}, {Key: 'Action', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_ACTION}, {Key: 'Actor', Value: GITHUB_ACTOR_SANITIZED}, - {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, {Key: 'Commit', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_SHA}, + {Key: 'Branch', Value: ENVIRONMENT_VARIABLE_OVERRIDES.GITHUB_REF}, ] }) });