From b539e14bf6f938576cdd157ac3af5d0b2c8b513f Mon Sep 17 00:00:00 2001 From: Curtis Vogt Date: Wed, 15 Jan 2025 10:35:27 -0600 Subject: [PATCH] Add `DOCKER_METADATA_SET_OUTPUT_ENV` Signed-off-by: Curtis Vogt --- .github/workflows/ci.yml | 26 ++++++++++++++++++++++++++ README.md | 3 ++- src/main.ts | 4 +++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f2a8c96..3a30a63 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -472,6 +472,32 @@ jobs: DOCKER_METADATA_OUTPUT_ANNOTATIONS DOCKER_METADATA_OUTPUT_JSON + no-output-env: + runs-on: ubuntu-latest + env: + DOCKER_METADATA_SET_OUTPUT_ENV: false + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Docker meta + id: meta + uses: ./ + with: + images: | + ${{ env.DOCKER_IMAGE }} + ghcr.io/name/app + labels: | + maintainer=CrazyMax + annotations: | + maintainer=Foo + - + name: No output environment variables set + shell: bash + run: | + [[ "$(printenv | grep "^DOCKER_METADATA_OUTPUT_" | wc -l)" -eq 0 ]] || exit 1 + bake-annotations: runs-on: ubuntu-latest steps: diff --git a/README.md b/README.md index 379bfa6..52bd57a 100644 --- a/README.md +++ b/README.md @@ -319,7 +319,7 @@ The following outputs are available: | `bake-file-labels` | File | [Bake file definition](https://docs.docker.com/build/bake/reference/) path with labels | | `bake-file-annotations` | File | [Bake file definition](https://docs.docker.com/build/bake/reference/) path with [annotations](https://github.com/moby/buildkit/blob/master/docs/annotations.md) | -Alternatively, each output is also exported as an environment variable: +Alternatively, each output is also exported as an environment variable when `DOCKER_METADATA_SET_OUTPUT_ENV` is `true`: * `DOCKER_METADATA_OUTPUT_VERSION` * `DOCKER_METADATA_OUTPUT_TAGS` @@ -346,6 +346,7 @@ So it can be used with our [Docker Build Push action](https://github.com/docker/ | `DOCKER_METADATA_PR_HEAD_SHA` | Bool | If `true`, set associated head SHA instead of commit SHA that triggered the workflow on pull request event | | `DOCKER_METADATA_SHORT_SHA_LENGTH` | Number | Specifies the length of the [short commit SHA](#typesha) to ensure uniqueness. Default is `7`, but can be increased for larger repositories. | | `DOCKER_METADATA_ANNOTATIONS_LEVELS` | String | Comma separated list of annotations levels to set for annotations output separated (default `manifest`) | +| `DOCKER_METADATA_SET_OUTPUT_ENV` | Bool | If `true`, sets each output as an environmental variable (default `true`) | ## `context` input diff --git a/src/main.ts b/src/main.ts index 9d341a2..7fda700 100644 --- a/src/main.ts +++ b/src/main.ts @@ -13,6 +13,8 @@ actionsToolkit.run( const toolkit = new Toolkit({githubToken: inputs.githubToken}); const context = await getContext(inputs.context, toolkit); const repo = await toolkit.github.repoData(); + const outputEnv = (process.env.DOCKER_METADATA_SET_OUTPUT_ENV || 'true') === 'true'; + const setOutput = outputEnv ? setOutputAndEnv : core.setOutput; await core.group(`Context info`, async () => { core.info(`eventName: ${context.eventName}`); @@ -105,7 +107,7 @@ actionsToolkit.run( } ); -function setOutput(name: string, value: string) { +function setOutputAndEnv(name: string, value: string) { core.setOutput(name, value); core.exportVariable(`DOCKER_METADATA_OUTPUT_${name.replace(/\W/g, '_').toUpperCase()}`, value); }