|
@@ -3,6 +3,7 @@ package containerimage
|
|
import (
|
|
import (
|
|
"context"
|
|
"context"
|
|
"fmt"
|
|
"fmt"
|
|
|
|
+ "strings"
|
|
|
|
|
|
distref "github.com/docker/distribution/reference"
|
|
distref "github.com/docker/distribution/reference"
|
|
"github.com/docker/docker/image"
|
|
"github.com/docker/docker/image"
|
|
@@ -46,11 +47,13 @@ func (e *imageExporter) Resolve(ctx context.Context, opt map[string]string) (exp
|
|
for k, v := range opt {
|
|
for k, v := range opt {
|
|
switch k {
|
|
switch k {
|
|
case keyImageName:
|
|
case keyImageName:
|
|
- ref, err := distref.ParseNormalizedNamed(v)
|
|
|
|
- if err != nil {
|
|
|
|
- return nil, err
|
|
|
|
|
|
+ for _, v := range strings.Split(v, ",") {
|
|
|
|
+ ref, err := distref.ParseNormalizedNamed(v)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ i.targetNames = append(i.targetNames, ref)
|
|
}
|
|
}
|
|
- i.targetName = ref
|
|
|
|
case exporterImageConfig:
|
|
case exporterImageConfig:
|
|
i.config = []byte(v)
|
|
i.config = []byte(v)
|
|
default:
|
|
default:
|
|
@@ -62,8 +65,8 @@ func (e *imageExporter) Resolve(ctx context.Context, opt map[string]string) (exp
|
|
|
|
|
|
type imageExporterInstance struct {
|
|
type imageExporterInstance struct {
|
|
*imageExporter
|
|
*imageExporter
|
|
- targetName distref.Named
|
|
|
|
- config []byte
|
|
|
|
|
|
+ targetNames []distref.Named
|
|
|
|
+ config []byte
|
|
}
|
|
}
|
|
|
|
|
|
func (e *imageExporterInstance) Name() string {
|
|
func (e *imageExporterInstance) Name() string {
|
|
@@ -126,11 +129,11 @@ func (e *imageExporterInstance) Export(ctx context.Context, ref cache.ImmutableR
|
|
}
|
|
}
|
|
configDone(nil)
|
|
configDone(nil)
|
|
|
|
|
|
- if e.targetName != nil {
|
|
|
|
- if e.opt.ReferenceStore != nil {
|
|
|
|
- tagDone := oneOffProgress(ctx, "naming to "+e.targetName.String())
|
|
|
|
|
|
+ if e.opt.ReferenceStore != nil {
|
|
|
|
+ for _, targetName := range e.targetNames {
|
|
|
|
+ tagDone := oneOffProgress(ctx, "naming to "+targetName.String())
|
|
|
|
|
|
- if err := e.opt.ReferenceStore.AddTag(e.targetName, digest.Digest(id), true); err != nil {
|
|
|
|
|
|
+ if err := e.opt.ReferenceStore.AddTag(targetName, digest.Digest(id), true); err != nil {
|
|
return nil, tagDone(err)
|
|
return nil, tagDone(err)
|
|
}
|
|
}
|
|
tagDone(nil)
|
|
tagDone(nil)
|