Skip to content

Commit ec23730

Browse files
committed
Fixed the issue that a new output tag would not be uploaded if a cache was found in the database during the dup convert process.
Signed-off-by: fourierrr <fourierrr@gmail.com>
1 parent 0c2f057 commit ec23730

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

cmd/convertor/builder/builder.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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 {
349350
type 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

Comments
 (0)