From d7458455bbf0dfbe4ba54b37ca36d9d6c5cc38ff Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Mon, 31 Jan 2022 11:47:45 +0100 Subject: [PATCH] Fix add-hosts context Signed-off-by: CrazyMax --- .github/workflows/ci.yml | 4 ++-- README.md | 2 +- __tests__/context.test.ts | 6 +++++- action.yml | 4 ++-- dist/index.js | 8 ++++---- src/context.ts | 10 +++++----- 6 files changed, 19 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e6b7f54..5b1febc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -416,7 +416,7 @@ jobs: if: always() uses: crazy-max/ghaction-dump-context@v1 - addhost: + add-hosts: runs-on: ubuntu-latest steps: - @@ -432,7 +432,7 @@ jobs: context: ./test file: ./test/addhost.Dockerfile tags: name/app:latest - add-host: | + add-hosts: | docker:10.180.0.1 foo:10.0.0.1 - diff --git a/README.md b/README.md index 10c214d..a053736 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ Following inputs can be used as `step.with` keys | Name | Type | Description | |---------------------|----------|------------------------------------| -| `add-host` | List/CSV | Add a [custom host-to-IP mapping](https://docs.docker.com/engine/reference/commandline/build/#add-entries-to-container-hosts-file---add-host) (e.g., `docker:10.180.0.1`) | +| `add-hosts` | List/CSV | List of [customs host-to-IP mapping](https://docs.docker.com/engine/reference/commandline/build/#add-entries-to-container-hosts-file---add-host) (e.g., `docker:10.180.0.1`) | | `allow` | List/CSV | List of [extra privileged entitlement](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#allow) (e.g., `network.host,security.insecure`) | | `builder` | String | Builder instance (see [setup-buildx](https://github.com/docker/setup-buildx-action) action) | | `build-args` | List | List of build-time variables | diff --git a/__tests__/context.test.ts b/__tests__/context.test.ts index 1bd111f..e318155 100644 --- a/__tests__/context.test.ts +++ b/__tests__/context.test.ts @@ -446,6 +446,7 @@ ccc`], ['context', '.'], ['tag', 'localhost:5000/name/app:latest'], ['file', './test/Dockerfile'], + ['add-hosts', 'docker:10.180.0.1,foo:10.0.0.1'], ['network', 'host'], ['load', 'false'], ['no-cache', 'false'], @@ -455,6 +456,8 @@ ccc`], [ 'buildx', 'build', + '--add-host', 'docker:10.180.0.1', + '--add-host', 'foo:10.0.0.1', '--file', './test/Dockerfile', '--iidfile', '/tmp/.docker-build-push-jest/iidfile', '--metadata-file', '/tmp/.docker-build-push-jest/metadata-file', @@ -469,7 +472,7 @@ ccc`], new Map([ ['context', '.'], ['file', './test/Dockerfile'], - ['add-host', 'docker:10.180.0.1'], + ['add-hosts', 'docker:10.180.0.1\nfoo:10.0.0.1'], ['cgroup-parent', 'foo'], ['shm-size', '2g'], ['ulimit', `nofile=1024:1024 @@ -483,6 +486,7 @@ nproc=3`], 'buildx', 'build', '--add-host', 'docker:10.180.0.1', + '--add-host', 'foo:10.0.0.1', '--cgroup-parent', 'foo', '--file', './test/Dockerfile', '--iidfile', '/tmp/.docker-build-push-jest/iidfile', diff --git a/action.yml b/action.yml index c24ed45..d6f5818 100644 --- a/action.yml +++ b/action.yml @@ -7,8 +7,8 @@ branding: color: 'blue' inputs: - add-host: - description: "Add a custom host-to-IP mapping (e.g., docker:10.180.0.1)" + add-hosts: + description: "List of a customs host-to-IP mapping (e.g., docker:10.180.0.1)" required: false allow: description: "List of extra privileged entitlement (e.g., network.host,security.insecure)" diff --git a/dist/index.js b/dist/index.js index 1d2cc75..dd591ff 100644 --- a/dist/index.js +++ b/dist/index.js @@ -270,7 +270,7 @@ exports.tmpNameSync = tmpNameSync; function getInputs(defaultContext) { return __awaiter(this, void 0, void 0, function* () { return { - addHost: yield getInputList('add-host'), + addHosts: yield getInputList('add-hosts'), allow: yield getInputList('allow'), buildArgs: yield getInputList('build-args', true), builder: core.getInput('builder'), @@ -312,9 +312,9 @@ exports.getArgs = getArgs; function getBuildArgs(inputs, defaultContext, buildxVersion) { return __awaiter(this, void 0, void 0, function* () { let args = ['build']; - if (inputs.addHost.length > 0) { - args.push('--add-host', inputs.addHost.join(',')); - } + yield exports.asyncForEach(inputs.addHosts, (addHost) => __awaiter(this, void 0, void 0, function* () { + args.push('--add-host', addHost); + })); if (inputs.allow.length > 0) { args.push('--allow', inputs.allow.join(',')); } diff --git a/src/context.ts b/src/context.ts index 087cca7..7a42964 100644 --- a/src/context.ts +++ b/src/context.ts @@ -14,7 +14,7 @@ import * as handlebars from 'handlebars'; let _defaultContext, _tmpDir: string; export interface Inputs { - addHost: string[]; + addHosts: string[]; allow: string[]; buildArgs: string[]; builder: string; @@ -68,7 +68,7 @@ export function tmpNameSync(options?: tmp.TmpNameOptions): string { export async function getInputs(defaultContext: string): Promise { return { - addHost: await getInputList('add-host'), + addHosts: await getInputList('add-hosts'), allow: await getInputList('allow'), buildArgs: await getInputList('build-args', true), builder: core.getInput('builder'), @@ -106,9 +106,9 @@ export async function getArgs(inputs: Inputs, defaultContext: string, buildxVers async function getBuildArgs(inputs: Inputs, defaultContext: string, buildxVersion: string): Promise> { let args: Array = ['build']; - if (inputs.addHost.length > 0) { - args.push('--add-host', inputs.addHost.join(',')); - } + await asyncForEach(inputs.addHosts, async addHost => { + args.push('--add-host', addHost); + }); if (inputs.allow.length > 0) { args.push('--allow', inputs.allow.join(',')); }