bake: fix undefined output property

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax 2023-03-26 19:26:59 +02:00
parent d0929eeb16
commit a7448298e0
No known key found for this signature in database
GPG Key ID: 3248E46B6BB8C7F7
7 changed files with 89 additions and 19 deletions

View File

@ -31,9 +31,14 @@ describe('parseDefinitions', () => {
// prettier-ignore
test.each([
[
[path.join(fixturesDir, 'bake.hcl')],
[path.join(fixturesDir, 'bake-01.hcl')],
['validate'],
path.join(fixturesDir, 'bake-validate.json')
path.join(fixturesDir, 'bake-01-validate.json')
],
[
[path.join(fixturesDir, 'bake-02.hcl')],
['build'],
path.join(fixturesDir, 'bake-02-build.json')
]
])('given %p', async (sources: string[], targets: string[], out: string) => {
const bake = new Bake();
@ -57,6 +62,16 @@ describe('hasLocalExporter', () => {
},
false
],
[
{
"target": {
"build": {
"target": "build"
},
}
},
false
],
[
{
"target": {

View File

@ -0,0 +1,20 @@
{
"group": {
"default": {
"targets": [
"build"
]
}
},
"target": {
"build": {
"context": ".",
"dockerfile": "Dockerfile",
"args": {
"BUILDKIT_CONTEXT_KEEP_GIT_DIR": "1",
"GO_VERSION": "1.20"
},
"target": "build"
}
}
}

View File

@ -0,0 +1,33 @@
// Copyright 2023 actions-toolkit authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
variable "GO_VERSION" {
default = "1.20"
}
target "_common" {
args = {
GO_VERSION = GO_VERSION
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
}
}
group "default" {
targets = ["build"]
}
target "build" {
inherits = ["_common"]
target = "build"
}

View File

@ -84,7 +84,9 @@ export class Bake {
const exporters = new Array<string>();
for (const key in def.target) {
const target = def.target[key];
exporters.push(...target.output);
if (target.output) {
exporters.push(...target.output);
}
}
return exporters;
}

View File

@ -24,22 +24,22 @@ export interface Group {
}
export interface Target {
args: Record<string, string>;
attest: Array<string>;
'cache-from': Array<string>;
'cache-to': Array<string>;
args?: Record<string, string>;
attest?: Array<string>;
'cache-from'?: Array<string>;
'cache-to'?: Array<string>;
context: string;
contexts: Record<string, string>;
contexts?: Record<string, string>;
dockerfile: string;
'dockerfile-inline': string;
labels: Record<string, string>;
'no-cache': boolean;
'no-cache-filter': Array<string>;
output: Array<string>;
platforms: Array<string>;
pull: boolean;
secret: Array<string>;
ssh: Array<string>;
tags: Array<string>;
target: string;
'dockerfile-inline'?: string;
labels?: Record<string, string>;
'no-cache'?: boolean;
'no-cache-filter'?: Array<string>;
output?: Array<string>;
platforms?: Array<string>;
pull?: boolean;
secret?: Array<string>;
ssh?: Array<string>;
tags?: Array<string>;
target?: string;
}