44 "context"
55 "slices"
66 "strconv"
7+ "time"
78
89 "github.com/containerd/containerd/v2/core/content"
910 "github.com/containerd/containerd/v2/core/diff"
@@ -25,6 +26,7 @@ import (
2526 "github.com/moby/buildkit/util/contentutil"
2627 "github.com/moby/buildkit/util/flightcontrol"
2728 "github.com/moby/buildkit/util/imageutil"
29+ "github.com/moby/buildkit/util/leaseutil"
2830 "github.com/moby/buildkit/util/pull"
2931 "github.com/moby/buildkit/util/resolver"
3032 "github.com/moby/buildkit/util/tracing"
@@ -193,14 +195,22 @@ func (is *Source) ResolveImageMetadata(ctx context.Context, id *ImageIdentifier,
193195 ret .Config = res .dt
194196 }
195197 if opt .AttestationChain {
198+ ctx , done , err := leaseutil .WithLease (ctx , is .LeaseManager , leases .WithExpiration (5 * time .Minute ), leaseutil .MakeTemporary )
199+ if err != nil {
200+ return nil , errors .WithStack (err )
201+ }
202+ defer func () {
203+ // this lease is not deleted to allow other components to access manifest/config from cache. It will be deleted after 5 min deadline or on pruning inactive builder
204+ imageutil .AddLease (done )
205+ }()
196206 res , err := is .gAttestChain .Do (ctx , key , func (ctx context.Context ) (* sourceresolver.AttestationChain , error ) {
197207 refStr , desc , err := rslvr .Resolve (ctx , ref )
198208 if err != nil {
199- return nil , err
209+ return nil , errors . WithStack ( err )
200210 }
201211 f , err := rslvr .Fetcher (ctx , refStr )
202212 if err != nil {
203- return nil , err
213+ return nil , errors . WithStack ( err )
204214 }
205215 named , err := distreference .ParseNormalizedNamed (ref )
206216 if err != nil {
@@ -230,14 +240,14 @@ func (is *Source) ResolveImageMetadata(ctx context.Context, id *ImageIdentifier,
230240 descs = append (descs , sc .SignatureManifest .Descriptor )
231241 mfst , err := sc .OCIManifest (ctx , sc .SignatureManifest )
232242 if err != nil {
233- return nil , err
243+ return nil , errors . WithStack ( err )
234244 }
235245 descs = append (descs , mfst .Layers ... )
236246 }
237247 for _ , desc := range descs {
238248 dt , err := policyimage .ReadBlob (ctx , prov , desc )
239249 if err != nil {
240- return nil , err
250+ return nil , errors . WithStack ( err )
241251 }
242252 if ac .Blobs == nil {
243253 ac .Blobs = make (map [digest.Digest ]sourceresolver.Blob )
@@ -248,7 +258,7 @@ func (is *Source) ResolveImageMetadata(ctx context.Context, id *ImageIdentifier,
248258 }
249259 }
250260 if err := prov .SetGCLabels (ctx , desc ); err != nil {
251- return nil , err
261+ return nil , errors . WithStack ( err )
252262 }
253263 return ac , nil
254264 })
0 commit comments