Skip to content

Commit 7b3ce1c

Browse files
Copilotneilime
andcommitted
fix: harden docker build-image config script
Co-authored-by: neilime <314088+neilime@users.noreply.github.com>
1 parent f00ebb6 commit 7b3ce1c

1 file changed

Lines changed: 20 additions & 8 deletions

File tree

actions/docker/build-image/action.yml

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -168,15 +168,24 @@ runs:
168168
169169
- id: get-docker-config
170170
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
171+
env:
172+
CACHE_REGISTRY: ${{ steps.docker-setup.outputs.cache-registry }}
173+
CACHE_TYPE_INPUT: ${{ inputs.cache-type }}
174+
CONTEXT_INPUT: ${{ inputs.context }}
175+
DOCKERFILE_INPUT: ${{ inputs.dockerfile }}
176+
METADATA_IMAGE: ${{ steps.metadata.outputs.image }}
177+
MULTI_PLATFORM_INPUT: ${{ inputs.multi-platform }}
178+
PLATFORM_INPUT: ${{ inputs.platform }}
179+
SLUGIFIED_PLATFORM: ${{ steps.slugify-platform.outputs.result }}
171180
with:
172181
script: |
173182
const fs = require('fs');
174183
const path = require('path');
175184
176185
const workspace = process.env.GITHUB_WORKSPACE || process.cwd();
177-
const rawContext = `${{ inputs.context }}`.trim();
186+
const rawContext = (process.env.CONTEXT_INPUT || '').trim();
178187
const contextPath = rawContext.length > 0 ? rawContext : '.';
179-
const rawDockerfile = `${{ inputs.dockerfile }}`.trim();
188+
const rawDockerfile = (process.env.DOCKERFILE_INPUT || '').trim();
180189
const dockerfileName = rawDockerfile.length > 0 ? rawDockerfile : 'Dockerfile';
181190
182191
const dockerfilePath = path.resolve(workspace, contextPath, dockerfileName);
@@ -188,13 +197,16 @@ runs:
188197
const resolvedDockerfilePath = fs.realpathSync(dockerfilePath);
189198
core.setOutput('dockerfile-path', resolvedDockerfilePath);
190199
191-
const slugifiedPlatform = `${{ steps.slugify-platform.outputs.result }}`;
200+
const slugifiedPlatform = process.env.SLUGIFIED_PLATFORM || '';
192201
const tagSuffix = `-${slugifiedPlatform}`;
193202
core.setOutput('cache-flavor', `suffix=${tagSuffix}`);
194203
195-
const cacheType = `${{ inputs.cache-type }}`.trim();
196-
const metadataImage = `${{ steps.metadata.outputs.image }}`;
197-
const cacheRegistry = `${{ steps.docker-setup.outputs.cache-registry }}`.trim();
204+
const cacheType = (process.env.CACHE_TYPE_INPUT || '').trim();
205+
const metadataImage = process.env.METADATA_IMAGE || '';
206+
const cacheRegistry = (process.env.CACHE_REGISTRY || '').trim();
207+
if (cacheType === 'registry' && !cacheRegistry.length) {
208+
return core.setFailed('Cache registry is required when cache-type is set to "registry".');
209+
}
198210
const metadataImageWithoutRegistry = metadataImage.replace(/^[^\/]+\//, '');
199211
const cacheBaseImage = cacheRegistry.length ? `${cacheRegistry}/${metadataImageWithoutRegistry}` : metadataImage;
200212
const cacheImage = cacheType === 'registry' ? `${cacheBaseImage}/cache` : metadataImage;
@@ -207,14 +219,14 @@ runs:
207219
// docker not available on runner
208220
}
209221
210-
const multiplatformInput = `${{ inputs.multi-platform }}`.trim().toLowerCase();
222+
const multiplatformInput = (process.env.MULTI_PLATFORM_INPUT || '').trim().toLowerCase();
211223
const isMultiplatform = !(multiplatformInput.length === 0 || multiplatformInput === 'false');
212224
if (isMultiplatform) {
213225
core.debug('Multi-platform build is enabled.');
214226
core.setOutput('multi-platform', true);
215227
}
216228
217-
const platform = `${{ inputs.platform }}`.trim();
229+
const platform = (process.env.PLATFORM_INPUT || '').trim();
218230
if (platform.length === 0) {
219231
return core.setFailed('Input "platform" is required.');
220232
}

0 commit comments

Comments
 (0)