diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b915d91..5091e3b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -455,3 +455,29 @@ jobs: - name: Print envs run: env|sort + + bake-cwd: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + version: latest + - + name: Docker meta + id: docker_meta + uses: ./ + - + name: Build + uses: docker/bake-action@v4 + with: + files: | + ./test/docker-bake.hcl + ${{ steps.docker_meta.outputs.bake-file-tags }} + ${{ steps.docker_meta.outputs.bake-file-labels }} + targets: | + release diff --git a/src/main.ts b/src/main.ts index a1324ec..90ecc98 100644 --- a/src/main.ts +++ b/src/main.ts @@ -94,17 +94,22 @@ actionsToolkit.run( setOutput('json', JSON.stringify(jsonOutput)); }); + // Specifying local and remote bake files is supported since Buildx 0.12.0. + // Set cwd:// prefix for local bake files to avoid ambiguity with remote + // https://github.com/docker/buildx/pull/1838 + const bakeFileCwdPrefix = (await toolkit.buildx.versionSatisfies('>=0.12.0').catch(() => false)) ? 'cwd://' : ''; + // Bake files for (const kind of ['tags', 'labels', 'annotations:' + annotationsLevels]) { const outputName = kind.split(':')[0]; const bakeFile: string = meta.getBakeFile(kind); await core.group(`Bake file definition (${outputName})`, async () => { core.info(fs.readFileSync(bakeFile, 'utf8')); - setOutput(`bake-file-${outputName}`, bakeFile); + setOutput(`bake-file-${outputName}`, `${bakeFileCwdPrefix}${bakeFile}`); }); } // Bake file with tags and labels - setOutput(`bake-file`, meta.getBakeFileTagsLabels()); + setOutput(`bake-file`, `${bakeFileCwdPrefix}${meta.getBakeFileTagsLabels()}`); } );