mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 00:47:48 +08:00
build: allow multiple exports if supported by buildkit
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
parent
83c30c6c5a
commit
fcbe2803c8
@ -290,7 +290,9 @@ func toSolveOpt(ctx context.Context, node builder.Node, multiDriver bool, opt Op
|
|||||||
opt.Exports = []client.ExportEntry{{Type: "image", Attrs: map[string]string{}}}
|
opt.Exports = []client.ExportEntry{{Type: "image", Attrs: map[string]string{}}}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return nil, nil, errors.Errorf("multiple outputs currently unsupported")
|
if err := bopts.LLBCaps.Supports(pb.CapMultipleExporters); err != nil {
|
||||||
|
return nil, nil, errors.Errorf("multiple outputs currently unsupported by the current BuildKit daemon, please upgrade to version v0.13+ or use a single output")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// fill in image exporter names from tags
|
// fill in image exporter names from tags
|
||||||
|
@ -15,6 +15,7 @@ func CreateExports(entries []*ExportEntry) ([]client.ExportEntry, error) {
|
|||||||
if len(entries) == 0 {
|
if len(entries) == 0 {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
var stdoutUsed bool
|
||||||
for _, entry := range entries {
|
for _, entry := range entries {
|
||||||
if entry.Type == "" {
|
if entry.Type == "" {
|
||||||
return nil, errors.Errorf("type is required for output")
|
return nil, errors.Errorf("type is required for output")
|
||||||
@ -68,10 +69,14 @@ func CreateExports(entries []*ExportEntry) ([]client.ExportEntry, error) {
|
|||||||
entry.Destination = "-"
|
entry.Destination = "-"
|
||||||
}
|
}
|
||||||
if entry.Destination == "-" {
|
if entry.Destination == "-" {
|
||||||
|
if stdoutUsed {
|
||||||
|
return nil, errors.Errorf("multiple outputs configured to write to stdout")
|
||||||
|
}
|
||||||
if _, err := console.ConsoleFromFile(os.Stdout); err == nil {
|
if _, err := console.ConsoleFromFile(os.Stdout); err == nil {
|
||||||
return nil, errors.Errorf("dest file is required for %s exporter. refusing to write to console", out.Type)
|
return nil, errors.Errorf("dest file is required for %s exporter. refusing to write to console", out.Type)
|
||||||
}
|
}
|
||||||
out.Output = wrapWriteCloser(os.Stdout)
|
out.Output = wrapWriteCloser(os.Stdout)
|
||||||
|
stdoutUsed = true
|
||||||
} else if entry.Destination != "" {
|
} else if entry.Destination != "" {
|
||||||
fi, err := os.Stat(entry.Destination)
|
fi, err := os.Stat(entry.Destination)
|
||||||
if err != nil && !os.IsNotExist(err) {
|
if err != nil && !os.IsNotExist(err) {
|
||||||
|
@ -424,6 +424,10 @@ $ docker buildx build -o type=docker,dest=- . > myimage.tar
|
|||||||
$ docker buildx build -t tonistiigi/foo -o type=registry
|
$ docker buildx build -t tonistiigi/foo -o type=registry
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> **Note **
|
||||||
|
>
|
||||||
|
> Since BuildKit v0.13.0 multiple outputs can be specified by repeating the flag.
|
||||||
|
|
||||||
Supported exported types are:
|
Supported exported types are:
|
||||||
|
|
||||||
#### `local`
|
#### `local`
|
||||||
|
Loading…
x
Reference in New Issue
Block a user