From 27f6f54c068d260d0a35951cbc01cf0a46b3f1a2 Mon Sep 17 00:00:00 2001 From: Ivan Hernandez Date: Tue, 4 May 2021 09:32:51 +0200 Subject: [PATCH] using SSH_AUTH_SOCK (ssh agent forwarding) to pull upm private repos --- dist/Dockerfile | 2 ++ src/index.ts | 4 ++-- src/model/action.ts | 4 ++++ src/model/docker.ts | 4 ++++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/dist/Dockerfile b/dist/Dockerfile index 85da52f6..338f83c6 100644 --- a/dist/Dockerfile +++ b/dist/Dockerfile @@ -17,4 +17,6 @@ ADD entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh RUN ls +RUN apt-get update && apt-get install -y openssh-client + ENTRYPOINT ["/entrypoint.sh"] diff --git a/src/index.ts b/src/index.ts index 2d5687af..dbb5c021 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,7 +6,7 @@ async function run() { Action.checkCompatibility(); Cache.verify(); - const { dockerfile, workspace, actionFolder } = Action; + const { dockerfile, workspace, actionFolder, sshAgent } = Action; const buildParameters = await BuildParameters.create(); const baseImage = new ImageTag(buildParameters); @@ -27,7 +27,7 @@ async function run() { default: core.info('Building locally'); builtImage = await Docker.build({ path: actionFolder, dockerfile, baseImage }); - await Docker.run(builtImage, { workspace, ...buildParameters }); + await Docker.run(builtImage, { workspace, sshAgent, ...buildParameters }); break; } diff --git a/src/model/action.ts b/src/model/action.ts index b7703e8b..6eb07132 100644 --- a/src/model/action.ts +++ b/src/model/action.ts @@ -37,6 +37,10 @@ class Action { return process.env.GITHUB_WORKSPACE; } + static get sshAgent() { + return process.env.SSH_AUTH_SOCK; + } + static checkCompatibility() { const currentPlatform = process.platform; if (!Action.supportedPlatforms.includes(currentPlatform)) { diff --git a/src/model/docker.ts b/src/model/docker.ts index 7c39ce36..9301f545 100644 --- a/src/model/docker.ts +++ b/src/model/docker.ts @@ -37,6 +37,7 @@ class Docker { androidKeyaliasPass, customParameters, chownFilesTo, + sshAgent, } = parameters; const command = `docker run \ @@ -79,10 +80,13 @@ class Docker { --env RUNNER_TOOL_CACHE \ --env RUNNER_TEMP \ --env RUNNER_WORKSPACE \ + --env SSH_AUTH_SOCK=/ssh-agent \ --volume "/var/run/docker.sock":"/var/run/docker.sock" \ --volume "${runnerTempPath}/_github_home":"/root" \ --volume "${runnerTempPath}/_github_workflow":"/github/workflow" \ --volume "${workspace}":"/github/workspace" \ + --volume "${sshAgent}":"/ssh-agent" \ + --volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro \ ${image}`; await exec(command, undefined, { silent });