From 19c07384dc024078a12e52fdb5dc1eec2b63332c Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Mon, 26 Apr 2021 11:02:09 +0200 Subject: [PATCH] Fix ref spec for default Git context Signed-off-by: CrazyMax --- __tests__/context.test.ts | 24 ++++++++++++------------ dist/index.js | 10 ++++++++-- src/context.ts | 9 ++++++++- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/__tests__/context.test.ts b/__tests__/context.test.ts index 56d93d1..b500490 100644 --- a/__tests__/context.test.ts +++ b/__tests__/context.test.ts @@ -111,7 +111,7 @@ PejgXO0uIRolYQ3sz2tMGhx1MfBqH64= -----END PGP PRIVATE KEY BLOCK-----`; jest.spyOn(context, 'defaultContext').mockImplementation((): string => { - return 'https://github.com/docker/build-push-action.git#test-jest'; + return 'https://github.com/docker/build-push-action.git#refs/heads/test-jest'; }); jest.spyOn(context, 'tmpDir').mockImplementation((): string => { @@ -161,7 +161,7 @@ describe('getArgs', () => { '--build-arg', 'MY_ARG=val1,val2,val3', '--build-arg', 'ARG=val', '--iidfile', '/tmp/.docker-build-push-jest/iidfile', - 'https://github.com/docker/build-push-action.git#test-jest' + 'https://github.com/docker/build-push-action.git#refs/heads/test-jest' ] ], [ @@ -175,7 +175,7 @@ describe('getArgs', () => { '--tag', 'name/app:7.4', '--tag', 'name/app:latest', '--iidfile', '/tmp/.docker-build-push-jest/iidfile', - 'https://github.com/docker/build-push-action.git#test-jest' + 'https://github.com/docker/build-push-action.git#refs/heads/test-jest' ] ], [ @@ -244,13 +244,13 @@ describe('getArgs', () => { 'build', '--output', '.', '--secret', 'id=GIT_AUTH_TOKEN,src=/tmp/.docker-build-push-jest/.tmpname-jest', - 'https://github.com/docker/build-push-action.git#test-jest' + 'https://github.com/docker/build-push-action.git#refs/heads/test-jest' ] ], [ '0.4.2', new Map([ - ['context', 'https://github.com/docker/build-push-action.git#heads/master'], + ['context', 'https://github.com/docker/build-push-action.git#refs/heads/master'], ['tag', 'localhost:5000/name/app:latest'], ['platforms', 'linux/amd64,linux/arm64'], ['secrets', 'GIT_AUTH_TOKEN=abcdefghijklmno=0123456789'], @@ -267,13 +267,13 @@ describe('getArgs', () => { '--file', './test/Dockerfile', '--builder', 'builder-git-context-2', '--push', - 'https://github.com/docker/build-push-action.git#heads/master' + 'https://github.com/docker/build-push-action.git#refs/heads/master' ] ], [ '0.4.2', new Map([ - ['context', 'https://github.com/docker/build-push-action.git#heads/master'], + ['context', 'https://github.com/docker/build-push-action.git#refs/heads/master'], ['tag', 'localhost:5000/name/app:latest'], ['platforms', 'linux/amd64,linux/arm64'], ['secrets', `GIT_AUTH_TOKEN=abcdefghi,jklmno=0123456789 @@ -301,13 +301,13 @@ ccc"`], '--file', './test/Dockerfile', '--builder', 'builder-git-context-2', '--push', - 'https://github.com/docker/build-push-action.git#heads/master' + 'https://github.com/docker/build-push-action.git#refs/heads/master' ] ], [ '0.4.2', new Map([ - ['context', 'https://github.com/docker/build-push-action.git#heads/master'], + ['context', 'https://github.com/docker/build-push-action.git#refs/heads/master'], ['tag', 'localhost:5000/name/app:latest'], ['platforms', 'linux/amd64,linux/arm64'], ['secrets', `GIT_AUTH_TOKEN=abcdefghi,jklmno=0123456789 @@ -335,13 +335,13 @@ ccc`], '--file', './test/Dockerfile', '--builder', 'builder-git-context-2', '--push', - 'https://github.com/docker/build-push-action.git#heads/master' + 'https://github.com/docker/build-push-action.git#refs/heads/master' ] ], [ '0.5.1', new Map([ - ['context', 'https://github.com/docker/build-push-action.git#heads/master'], + ['context', 'https://github.com/docker/build-push-action.git#refs/heads/master'], ['tag', 'localhost:5000/name/app:latest'], ['secret-files', `MY_SECRET=${path.join(__dirname, 'fixtures', 'secret.txt').split(path.sep).join(path.posix.sep)}`], ['file', './test/Dockerfile'], @@ -358,7 +358,7 @@ ccc`], '--builder', 'builder-git-context-2', '--network', 'host', '--push', - 'https://github.com/docker/build-push-action.git#heads/master' + 'https://github.com/docker/build-push-action.git#refs/heads/master' ] ] ])( diff --git a/dist/index.js b/dist/index.js index c5ff160..a0a55c6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -13013,9 +13013,15 @@ const github = __importStar(__webpack_require__(438)); const buildx = __importStar(__webpack_require__(295)); let _defaultContext, _tmpDir; function defaultContext() { - var _a, _b; if (!_defaultContext) { - _defaultContext = `${process.env.GITHUB_SERVER_URL || 'https://github.com'}/${github.context.repo.owner}/${github.context.repo.repo}.git#${(_b = (_a = github.context) === null || _a === void 0 ? void 0 : _a.ref) === null || _b === void 0 ? void 0 : _b.replace(/^refs\//, '')}`; + let ref = github.context.ref; + if (github.context.sha && ref && !ref.startsWith('refs/')) { + ref = `refs/heads/${github.context.ref}`; + } + if (github.context.sha && !ref.startsWith(`refs/pull/`)) { + ref = github.context.sha; + } + _defaultContext = `${process.env.GITHUB_SERVER_URL || 'https://github.com'}/${github.context.repo.owner}/${github.context.repo.repo}.git#${ref}`; } return _defaultContext; } diff --git a/src/context.ts b/src/context.ts index f3cfb5f..e0cfa7b 100644 --- a/src/context.ts +++ b/src/context.ts @@ -38,9 +38,16 @@ export interface Inputs { export function defaultContext(): string { if (!_defaultContext) { + let ref = github.context.ref; + if (github.context.sha && ref && !ref.startsWith('refs/')) { + ref = `refs/heads/${github.context.ref}`; + } + if (github.context.sha && !ref.startsWith(`refs/pull/`)) { + ref = github.context.sha; + } _defaultContext = `${process.env.GITHUB_SERVER_URL || 'https://github.com'}/${github.context.repo.owner}/${ github.context.repo.repo - }.git#${github.context?.ref?.replace(/^refs\//, '')}`; + }.git#${ref}`; } return _defaultContext; }