diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d78e96c7..a1c38eb3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -323,6 +323,7 @@ jobs: - master - refs/tags/v0.5.1 - refs/pull/648/head + - 67bd6f4dc82a9cd96f34133dab3f6f7af803bb14 steps: - name: Checkout diff --git a/dist/index.js b/dist/index.js index 08c3e215..62bcaed1 100644 --- a/dist/index.js +++ b/dist/index.js @@ -151,10 +151,16 @@ function build(inputBuildRef, dockerConfigHome) { if (ref.length == 0) { ref = 'master'; } - const sha = yield git.getRemoteSha(repo, ref); - core.debug(`Remote ref ${sha} found`); + let vspec; + if (ref.match(/^[0-9a-fA-F]{40}$/)) { + vspec = ref; + } + else { + vspec = yield git.getRemoteSha(repo, ref); + } + core.debug(`Tool version spec ${vspec}`); let toolPath; - toolPath = tc.find('buildx', sha); + toolPath = tc.find('buildx', vspec); if (!toolPath) { const outFolder = path.join(context.tmpDir(), 'out').split(path.sep).join(path.posix.sep); toolPath = yield exec @@ -165,7 +171,7 @@ function build(inputBuildRef, dockerConfigHome) { if (res.stderr.length > 0 && res.exitCode != 0) { core.warning(res.stderr.trim()); } - return tc.cacheFile(`${outFolder}/buildx`, context.osPlat == 'win32' ? 'docker-buildx.exe' : 'docker-buildx', 'buildx', sha); + return tc.cacheFile(`${outFolder}/buildx`, context.osPlat == 'win32' ? 'docker-buildx.exe' : 'docker-buildx', 'buildx', vspec); }); } return setPlugin(toolPath, dockerConfigHome); diff --git a/src/buildx.ts b/src/buildx.ts index 97bb475d..c2518ed2 100644 --- a/src/buildx.ts +++ b/src/buildx.ts @@ -117,11 +117,16 @@ export async function build(inputBuildRef: string, dockerConfigHome: string): Pr ref = 'master'; } - const sha = await git.getRemoteSha(repo, ref); - core.debug(`Remote ref ${sha} found`); + let vspec: string; + if (ref.match(/^[0-9a-fA-F]{40}$/)) { + vspec = ref; + } else { + vspec = await git.getRemoteSha(repo, ref); + } + core.debug(`Tool version spec ${vspec}`); let toolPath: string; - toolPath = tc.find('buildx', sha); + toolPath = tc.find('buildx', vspec); if (!toolPath) { const outFolder = path.join(context.tmpDir(), 'out').split(path.sep).join(path.posix.sep); toolPath = await exec @@ -132,7 +137,7 @@ export async function build(inputBuildRef: string, dockerConfigHome: string): Pr if (res.stderr.length > 0 && res.exitCode != 0) { core.warning(res.stderr.trim()); } - return tc.cacheFile(`${outFolder}/buildx`, context.osPlat == 'win32' ? 'docker-buildx.exe' : 'docker-buildx', 'buildx', sha); + return tc.cacheFile(`${outFolder}/buildx`, context.osPlat == 'win32' ? 'docker-buildx.exe' : 'docker-buildx', 'buildx', vspec); }); }