From 53401988c752e8097419e38b8d3b57f25027398f Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Tue, 20 Oct 2020 19:04:54 +0200 Subject: [PATCH] Labels and build args should not be handled as CSV type Signed-off-by: CrazyMax --- README.md | 58 +++++++++++++++++---------------------- __tests__/context.test.ts | 7 ++++- dist/index.js | 4 +-- src/context.ts | 4 +-- 4 files changed, 35 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 8937540..ed8cbc5 100644 --- a/README.md +++ b/README.md @@ -592,46 +592,38 @@ with this action: Following inputs can be used as `step.with` keys -| Name | Type | Description | -|---------------------|---------|------------------------------------| -| `builder` | String | Builder instance (see [setup-buildx](https://github.com/docker/setup-buildx-action) action) | -| `context` | String | Build's context is the set of files located in the specified [`PATH` or `URL`](https://docs.docker.com/engine/reference/commandline/build/) (default [Git context](#git-context)) | -| `file` | String | Path to the Dockerfile (default `Dockerfile`) | -| `build-args` | List | List of build-time variables | -| `labels` | List | List of metadata for an image | -| `tags` | List | List of tags | -| `pull` | Bool | Always attempt to pull a newer version of the image (default `false`) | -| `target` | String | Sets the target stage to build | -| `allow` | List | List of [extra privileged entitlement](https://github.com/docker/buildx#--allowentitlement) (eg. `network.host,security.insecure`) | -| `no-cache` | Bool | Do not use cache when building the image (default `false`) | -| `platforms` | List | List of [target platforms](https://github.com/docker/buildx#---platformvaluevalue) for build | -| `load` | Bool | [Load](https://github.com/docker/buildx#--load) is a shorthand for `--output=type=docker` (default `false`) | -| `push` | Bool | [Push](https://github.com/docker/buildx#--push) is a shorthand for `--output=type=registry` (default `false`) | -| `outputs` | CSV | List of [output destinations](https://github.com/docker/buildx#-o---outputpath-typetypekeyvalue) (format: `type=local,dest=path`) | -| `cache-from` | CSV | List of [external cache sources](https://github.com/docker/buildx#--cache-fromnametypetypekeyvalue) (eg. `type=local,src=path/to/dir`) | -| `cache-to` | CSV | List of [cache export destinations](https://github.com/docker/buildx#--cache-tonametypetypekeyvalue) (eg. `type=local,dest=path/to/dir`) | -| `secrets` | CSV | List of secrets to expose to the build (eg. `key=value`, `GIT_AUTH_TOKEN=mytoken`) | +| Name | Type | Description | +|---------------------|----------|------------------------------------| +| `builder` | String | Builder instance (see [setup-buildx](https://github.com/docker/setup-buildx-action) action) | +| `context` | String | Build's context is the set of files located in the specified [`PATH` or `URL`](https://docs.docker.com/engine/reference/commandline/build/) (default [Git context](#git-context)) | +| `file` | String | Path to the Dockerfile (default `Dockerfile`) | +| `build-args` | List | List of build-time variables | +| `labels` | List | List of metadata for an image | +| `tags` | List/CSV | List of tags | +| `pull` | Bool | Always attempt to pull a newer version of the image (default `false`) | +| `target` | String | Sets the target stage to build | +| `allow` | List/CSV | List of [extra privileged entitlement](https://github.com/docker/buildx#--allowentitlement) (eg. `network.host,security.insecure`) | +| `no-cache` | Bool | Do not use cache when building the image (default `false`) | +| `platforms` | List/CSV | List of [target platforms](https://github.com/docker/buildx#---platformvaluevalue) for build | +| `load` | Bool | [Load](https://github.com/docker/buildx#--load) is a shorthand for `--output=type=docker` (default `false`) | +| `push` | Bool | [Push](https://github.com/docker/buildx#--push) is a shorthand for `--output=type=registry` (default `false`) | +| `outputs` | List | List of [output destinations](https://github.com/docker/buildx#-o---outputpath-typetypekeyvalue) (format: `type=local,dest=path`) | +| `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`) | +| `secrets` | List | List of secrets to expose to the build (eg. `key=value`, `GIT_AUTH_TOKEN=mytoken`) | -> `List` type can be a comma or newline-delimited string -> ```yaml -> tags: name/app:latest,name/app:1.0.0 -> ``` -> ```yaml -> tags: | -> name/app:latest -> name/app:1.0.0 -> ``` - -> `CSV` type must be a newline-delimited string -> ```yaml -> cache-from: user/app:cache -> ``` +> `List` type is a newline-delimited string > ```yaml > cache-from: | > user/app:cache > type=local,src=path/to/dir > ``` +> `CSV` type is a comma-delimited string +> ```yaml +> tags: name/app:latest,name/app:1.0.0 +> ``` + ### outputs Following outputs are available diff --git a/__tests__/context.test.ts b/__tests__/context.test.ts index 133f1d2..b373188 100644 --- a/__tests__/context.test.ts +++ b/__tests__/context.test.ts @@ -34,11 +34,13 @@ describe('getArgs', () => { [ '0.4.2', new Map([ - // noop + ['build-args', 'MY_ARG=val1,val2,val3\nARG=val'], ]), [ 'buildx', 'build', + '--build-arg', 'MY_ARG=val1,val2,val3', + '--build-arg', 'ARG=val', '--iidfile', '/tmp/.docker-build-push-jest/iidfile', '--file', 'Dockerfile', 'https://github.com/docker/build-push-action.git#test-jest' @@ -48,11 +50,14 @@ describe('getArgs', () => { '0.4.2', new Map([ ['context', '.'], + ['labels', 'org.opencontainers.image.title=buildkit\norg.opencontainers.image.description=concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit'], ['outputs', 'type=local,dest=./release-out'] ]), [ 'buildx', 'build', + '--label', 'org.opencontainers.image.title=buildkit', + '--label', 'org.opencontainers.image.description=concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit', '--output', 'type=local,dest=./release-out', '--file', 'Dockerfile', '.' diff --git a/dist/index.js b/dist/index.js index ccd9baa..7bdb2e0 100644 --- a/dist/index.js +++ b/dist/index.js @@ -14867,8 +14867,8 @@ function getInputs(defaultContext) { return { context: core.getInput('context') || defaultContext, file: core.getInput('file') || 'Dockerfile', - buildArgs: yield getInputList('build-args'), - labels: yield getInputList('labels'), + buildArgs: yield getInputList('build-args', true), + labels: yield getInputList('labels', true), tags: yield getInputList('tags'), pull: /true/i.test(core.getInput('pull')), target: core.getInput('target'), diff --git a/src/context.ts b/src/context.ts index 1e8b2b9..ab11146 100644 --- a/src/context.ts +++ b/src/context.ts @@ -46,8 +46,8 @@ export async function getInputs(defaultContext: string): Promise { return { context: core.getInput('context') || defaultContext, file: core.getInput('file') || 'Dockerfile', - buildArgs: await getInputList('build-args'), - labels: await getInputList('labels'), + buildArgs: await getInputList('build-args', true), + labels: await getInputList('labels', true), tags: await getInputList('tags'), pull: /true/i.test(core.getInput('pull')), target: core.getInput('target'),