1
0
Fork 0
mirror of https://github.com/docker/build-push-action.git synced 2025-04-01 20:50:09 +02:00

Add context-subdir input

Adds a `context-subdir` input which gets appended to the context URL. This new input is ignored (with a warning) if the user gives a non-default `context` input such as a path.

Signed-off-by: actualben <actualben@users.noreply.github.com>
This commit is contained in:
Ben Burke 2021-12-28 02:37:17 +00:00 committed by actualben
parent b1aeb1103e
commit e946f387af
4 changed files with 62 additions and 2 deletions

View file

@ -491,6 +491,43 @@ nproc=3`],
'.'
]
],
[
15,
'0.7.0',
new Map<string, string>([
['context-subdir', 'test'],
['load', 'false'],
['no-cache', 'false'],
['pull', 'false'],
['push', 'false'],
]),
[
'buildx',
'build',
'--iidfile', '/tmp/.docker-build-push-jest/iidfile',
'--metadata-file', '/tmp/.docker-build-push-jest/metadata-file',
'https://github.com/docker/build-push-action.git#refs/heads/test-jest:test'
]
],
[
16,
'0.7.0',
new Map<string, string>([
['context', './test'],
['context-subdir', 'should-be-ignored'],
['load', 'false'],
['no-cache', 'false'],
['pull', 'false'],
['push', 'false'],
]),
[
'buildx',
'build',
'--iidfile', '/tmp/.docker-build-push-jest/iidfile',
'--metadata-file', '/tmp/.docker-build-push-jest/metadata-file',
'./test'
]
],
])(
'[%d] given %p with %p as inputs, returns %p',
async (num: number, buildxVersion: string, inputs: Map<string, any>, expected: Array<string>) => {

View file

@ -28,6 +28,9 @@ inputs:
context:
description: "Build's context is the set of files located in the specified PATH or URL"
required: false
context-subdir:
description: "Subdirectory of the git repo to use as the docker build context (when using a URL-based context)"
required: false
file:
description: "Path to the Dockerfile"
required: false

12
dist/index.js generated vendored
View file

@ -276,6 +276,7 @@ function getInputs(defaultContext) {
cacheTo: yield getInputList('cache-to', true),
cgroupParent: core.getInput('cgroup-parent'),
context: core.getInput('context') || defaultContext,
contextSubdir: core.getInput('context-subdir'),
file: core.getInput('file'),
labels: yield getInputList('labels', true),
load: core.getBooleanInput('load'),
@ -302,7 +303,16 @@ function getArgs(inputs, defaultContext, buildxVersion) {
let args = ['buildx'];
args.push.apply(args, yield getBuildArgs(inputs, defaultContext, buildxVersion));
args.push.apply(args, yield getCommonArgs(inputs, buildxVersion));
args.push(inputs.context);
let context = inputs.context;
if (inputs.contextSubdir) {
if (context == defaultContext) {
context = `${context}:${inputs.contextSubdir}`;
}
else {
core.warning('"context-subdir" input is ignored when a "context" input is present');
}
}
args.push(context);
return args;
});
}

View file

@ -20,6 +20,7 @@ export interface Inputs {
cacheTo: string[];
cgroupParent: string;
context: string;
contextSubdir: string;
file: string;
labels: string[];
load: boolean;
@ -73,6 +74,7 @@ export async function getInputs(defaultContext: string): Promise<Inputs> {
cacheTo: await getInputList('cache-to', true),
cgroupParent: core.getInput('cgroup-parent'),
context: core.getInput('context') || defaultContext,
contextSubdir: core.getInput('context-subdir'),
file: core.getInput('file'),
labels: await getInputList('labels', true),
load: core.getBooleanInput('load'),
@ -97,7 +99,15 @@ export async function getArgs(inputs: Inputs, defaultContext: string, buildxVers
let args: Array<string> = ['buildx'];
args.push.apply(args, await getBuildArgs(inputs, defaultContext, buildxVersion));
args.push.apply(args, await getCommonArgs(inputs, buildxVersion));
args.push(inputs.context);
let context: string = inputs.context;
if (inputs.contextSubdir) {
if (context == defaultContext) {
context = `${context}:${inputs.contextSubdir}`;
} else {
core.warning('"context-subdir" input is ignored when a "context" input is present');
}
}
args.push(context);
return args;
}