154154 SBOM_IMAGE : " docker/buildkit-syft-scanner:1.10.0"
155155 BINFMT_IMAGE : " tonistiigi/binfmt:qemu-v10.2.1-65"
156156 DOCKER_ACTIONS_TOOLKIT_MODULE : " @docker/actions-toolkit@0.81.0"
157+ HANDLEBARS_MODULE : " handlebars@4.7.8"
157158 COSIGN_VERSION : " v3.0.2"
158159 LOCAL_EXPORT_DIR : " /tmp/buildx-output"
159160 MATRIX_SIZE_LIMIT : " 20"
@@ -167,7 +168,7 @@ jobs:
167168 ghaCacheSign : ${{ steps.set.outputs.ghaCacheSign }}
168169 steps :
169170 -
170- name : Install @docker/actions-toolkit
171+ name : Install dependencies
171172 uses : actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
172173 env :
173174 INPUT_DAT-MODULE : ${{ env.DOCKER_ACTIONS_TOOLKIT_MODULE }}
@@ -458,13 +459,20 @@ jobs:
458459 result_19 : ${{ steps.result.outputs.result_19 }}
459460 steps :
460461 -
461- name : Install @docker/actions-toolkit
462+ name : Install dependencies
462463 uses : actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
463464 env :
464465 INPUT_DAT-MODULE : ${{ env.DOCKER_ACTIONS_TOOLKIT_MODULE }}
466+ INPUT_HANDLEBARS-MODULE : ${{ env.HANDLEBARS_MODULE }}
465467 with :
466468 script : |
467- await exec.exec('npm', ['install', '--prefer-offline', '--ignore-scripts', core.getInput('dat-module')]);
469+ await exec.exec('npm', [
470+ 'install',
471+ '--prefer-offline',
472+ '--ignore-scripts',
473+ core.getInput('dat-module'),
474+ core.getInput('handlebars-module')
475+ ]);
468476 -
469477 name : Docker meta
470478 id : meta
@@ -610,6 +618,8 @@ jobs:
610618 INPUT_TARGET : ${{ inputs.target }}
611619 INPUT_VARS : ${{ inputs.vars }}
612620 INPUT_META-IMAGES : ${{ inputs.meta-images }}
621+ INPUT_META-VERSION : ${{ steps.meta.outputs.version }}
622+ INPUT_META-TAGS : ${{ steps.meta.outputs.tags }}
613623 INPUT_SET-META-ANNOTATIONS : ${{ inputs.set-meta-annotations }}
614624 INPUT_SET-META-LABELS : ${{ inputs.set-meta-labels }}
615625 INPUT_BAKE-FILE-TAGS : ${{ steps.meta.outputs.bake-file-tags }}
@@ -619,6 +629,7 @@ jobs:
619629 with :
620630 script : |
621631 const os = require('os');
632+ const Handlebars = require('handlebars');
622633 const { Build } = require('@docker/actions-toolkit/lib/buildx/build');
623634 const { GitHub } = require('@docker/actions-toolkit/lib/github/github');
624635 const { Util } = require('@docker/actions-toolkit/lib/util');
@@ -642,12 +653,20 @@ jobs:
642653 const inpTarget = core.getInput('target');
643654 const inpVars = Util.getInputList('vars');
644655 const inpMetaImages = core.getMultilineInput('meta-images');
656+ const inpMetaVersion = core.getInput('meta-version');
657+ const inpMetaTags = core.getMultilineInput('meta-tags');
645658 const inpSetMetaAnnotations = core.getBooleanInput('set-meta-annotations');
646659 const inpSetMetaLabels = core.getBooleanInput('set-meta-labels');
647660 const inpBakeFileTags = core.getInput('bake-file-tags');
648661 const inpBakeFileAnnotations = core.getInput('bake-file-annotations');
649662 const inpBakeFileLabels = core.getInput('bake-file-labels');
650663 const inpGitHubToken = core.getInput('github-token');
664+
665+ const meta = {
666+ version: inpMetaVersion,
667+ tags: inpMetaTags
668+ };
669+ const renderTemplate = value => Handlebars.compile(value, {noEscape: true})({meta});
651670
652671 const bakeSource = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}.git#${process.env.GITHUB_REF}:${inpContext}`;
653672 await core.group(`Set source output`, async () => {
@@ -719,8 +738,15 @@ jobs:
719738 return;
720739 }
721740
722- let bakeOverrides = [...inpSet, outputOverride ];
741+ let bakeOverrides = [];
723742 await core.group(`Set bake overrides`, async () => {
743+ try {
744+ bakeOverrides = inpSet.map(override => renderTemplate(override));
745+ } catch (err) {
746+ core.setFailed(`Failed to render Handlebars template: ${err.message}`);
747+ return;
748+ }
749+ bakeOverrides.push(outputOverride);
724750 bakeOverrides.push('*.tags=');
725751 if (GitHub.context.payload.repository?.private ?? false) {
726752 // if this is a private repository, we set min provenance mode
@@ -915,7 +941,7 @@ jobs:
915941 - build
916942 steps :
917943 -
918- name : Install @docker/actions-toolkit
944+ name : Install dependencies
919945 uses : actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
920946 env :
921947 INPUT_DAT-MODULE : ${{ env.DOCKER_ACTIONS_TOOLKIT_MODULE }}
0 commit comments