Add --ssh arg support

Signed-off-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
Jesse Hills 2020-09-11 11:23:49 +12:00
parent 41a004098f
commit fa61d38ad8
No known key found for this signature in database
GPG key ID: BEAAE804EFD8E83A
4 changed files with 18 additions and 3 deletions

View file

@ -673,6 +673,7 @@ Following inputs can be used as `step.with` keys
| `cache-from` | List | List of [external cache sources](https://github.com/docker/buildx#--cache-fromnametypetypekeyvalue) (eg. `type=local,src=path/to/dir`) | | `cache-from` | List | List of [external cache sources](https://github.com/docker/buildx#--cache-fromnametypetypekeyvalue) (eg. `type=local,src=path/to/dir`) |
| `cache-to` | List | List of [cache export destinations](https://github.com/docker/buildx#--cache-tonametypetypekeyvalue) (eg. `type=local,dest=path/to/dir`) | | `cache-to` | List | List of [cache export destinations](https://github.com/docker/buildx#--cache-tonametypetypekeyvalue) (eg. `type=local,dest=path/to/dir`) |
| `secrets` | List | List of secrets to expose to the build (eg. `key=value`, `GIT_AUTH_TOKEN=mytoken`) | | `secrets` | List | List of secrets to expose to the build (eg. `key=value`, `GIT_AUTH_TOKEN=mytoken`) |
| `ssh` | List | List of SSH agent socket or keys to expose to the build (eg: `default|<id>[=<socket>|<key>[,<key>]]`) |
### outputs ### outputs

View file

@ -67,6 +67,9 @@ inputs:
description: "GitHub Token used to authenticate against a repository for Git context" description: "GitHub Token used to authenticate against a repository for Git context"
default: ${{ github.token }} default: ${{ github.token }}
required: false required: false
ssh:
description: "List of SSH agent socket or keys to expose to the build (eg: default)"
required: false
outputs: outputs:
digest: digest:

6
dist/index.js generated vendored
View file

@ -12082,7 +12082,8 @@ function getInputs(defaultContext) {
cacheFrom: yield getInputList('cache-from', true), cacheFrom: yield getInputList('cache-from', true),
cacheTo: yield getInputList('cache-to', true), cacheTo: yield getInputList('cache-to', true),
secrets: yield getInputList('secrets', true), secrets: yield getInputList('secrets', true),
githubToken: core.getInput('github-token') githubToken: core.getInput('github-token'),
ssh: yield getInputList('ssh')
}; };
}); });
} }
@ -12137,6 +12138,9 @@ function getBuildArgs(inputs, defaultContext, buildxVersion) {
if (inputs.githubToken && !buildx.hasGitAuthToken(inputs.secrets) && inputs.context == defaultContext) { if (inputs.githubToken && !buildx.hasGitAuthToken(inputs.secrets) && inputs.context == defaultContext) {
args.push('--secret', yield buildx.getSecret(`GIT_AUTH_TOKEN=${inputs.githubToken}`)); args.push('--secret', yield buildx.getSecret(`GIT_AUTH_TOKEN=${inputs.githubToken}`));
} }
yield exports.asyncForEach(inputs.ssh, (ssh) => __awaiter(this, void 0, void 0, function* () {
args.push('--ssh', ssh);
}));
if (inputs.file) { if (inputs.file) {
args.push('--file', inputs.file); args.push('--file', inputs.file);
} }

View file

@ -3,10 +3,12 @@ import * as os from 'os';
import * as path from 'path'; import * as path from 'path';
import * as semver from 'semver'; import * as semver from 'semver';
import * as tmp from 'tmp'; import * as tmp from 'tmp';
import * as buildx from './buildx';
import * as core from '@actions/core'; import * as core from '@actions/core';
import * as github from '@actions/github'; import * as github from '@actions/github';
import * as buildx from './buildx';
let _defaultContext, _tmpDir: string; let _defaultContext, _tmpDir: string;
export interface Inputs { export interface Inputs {
@ -28,6 +30,7 @@ export interface Inputs {
cacheTo: string[]; cacheTo: string[];
secrets: string[]; secrets: string[];
githubToken: string; githubToken: string;
ssh: string[];
} }
export function defaultContext(): string { export function defaultContext(): string {
@ -69,7 +72,8 @@ export async function getInputs(defaultContext: string): Promise<Inputs> {
cacheFrom: await getInputList('cache-from', true), cacheFrom: await getInputList('cache-from', true),
cacheTo: await getInputList('cache-to', true), cacheTo: await getInputList('cache-to', true),
secrets: await getInputList('secrets', true), secrets: await getInputList('secrets', true),
githubToken: core.getInput('github-token') githubToken: core.getInput('github-token'),
ssh: await getInputList('ssh')
}; };
} }
@ -122,6 +126,9 @@ async function getBuildArgs(inputs: Inputs, defaultContext: string, buildxVersio
if (inputs.githubToken && !buildx.hasGitAuthToken(inputs.secrets) && inputs.context == defaultContext) { if (inputs.githubToken && !buildx.hasGitAuthToken(inputs.secrets) && inputs.context == defaultContext) {
args.push('--secret', await buildx.getSecret(`GIT_AUTH_TOKEN=${inputs.githubToken}`)); args.push('--secret', await buildx.getSecret(`GIT_AUTH_TOKEN=${inputs.githubToken}`));
} }
await asyncForEach(inputs.ssh, async ssh => {
args.push('--ssh', ssh);
});
if (inputs.file) { if (inputs.file) {
args.push('--file', inputs.file); args.push('--file', inputs.file);
} }