@@ -100,7 +100,7 @@ func (b *graphBuilder) Build(ctx context.Context) error {
100100 if err != nil {
101101 return fmt .Errorf ("failed to obtain new pusher: %w" , err )
102102 }
103- tagPusher , err := b .Resolver .Pusher (ctx , b .TargetRef ) // append '@' to avoid tag
103+ tagPusher , err := b .Resolver .Pusher (ctx , b .TargetRef )
104104 if err != nil {
105105 return fmt .Errorf ("failed to obtain new tag pusher: %w" , err )
106106 }
@@ -285,6 +285,7 @@ func (b *graphBuilder) buildOne(ctx context.Context, src v1.Descriptor, tag bool
285285 builder := & overlaybdBuilder {
286286 layers : len (engineBase .manifest .Layers ),
287287 engine : engine ,
288+ pusher : engineBase .pusher ,
288289 }
289290 desc , err := builder .Build (ctx )
290291 if err != nil {
@@ -349,6 +350,7 @@ func Build(ctx context.Context, opt BuilderOptions) error {
349350type overlaybdBuilder struct {
350351 layers int
351352 engine builderEngine
353+ pusher remotes.Pusher
352354}
353355
354356// Build return a descriptor of the converted target, as the caller may need it
@@ -363,6 +365,16 @@ func (b *overlaybdBuilder) Build(ctx context.Context) (v1.Descriptor, error) {
363365 // when errors are encountered fallback to regular conversion
364366 if convertedDesc , err := b .engine .CheckForConvertedManifest (ctx ); err == nil && convertedDesc .Digest != "" {
365367 logrus .Infof ("Image found already converted in registry with digest %s" , convertedDesc .Digest )
368+ cbuf , err := json .Marshal (convertedDesc )
369+ if err != nil {
370+ return v1.Descriptor {}, err
371+ }
372+ // ensure that output tag is pushed even if the manifest is already converted and found in registry
373+ // only push output tag if the pusher is tagPusher
374+ if err := uploadBytes (ctx , b .pusher , convertedDesc , cbuf ); err != nil {
375+ return v1.Descriptor {}, fmt .Errorf ("failed to upload converted manifest: %w" , err )
376+ }
377+ log .G (ctx ).Infof ("converted manifest uploaded, %s" , convertedDesc .Digest )
366378 return convertedDesc , nil
367379 }
368380
0 commit comments