Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
| ... | ... |
@@ -321,7 +321,11 @@ func (p *puller) CacheKey(ctx context.Context, index int) (string, bool, error) |
| 321 | 321 |
} |
| 322 | 322 |
|
| 323 | 323 |
if p.config != nil {
|
| 324 |
- return cacheKeyFromConfig(p.config).String(), true, nil |
|
| 324 |
+ k := cacheKeyFromConfig(p.config).String() |
|
| 325 |
+ if k == "" {
|
|
| 326 |
+ return digest.FromBytes(p.config).String(), true, nil |
|
| 327 |
+ } |
|
| 328 |
+ return k, true, nil |
|
| 325 | 329 |
} |
| 326 | 330 |
|
| 327 | 331 |
if err := p.resolve(ctx); err != nil {
|
| ... | ... |
@@ -336,7 +340,16 @@ func (p *puller) CacheKey(ctx context.Context, index int) (string, bool, error) |
| 336 | 336 |
return dgst.String(), false, nil |
| 337 | 337 |
} |
| 338 | 338 |
|
| 339 |
- return cacheKeyFromConfig(p.config).String(), true, nil |
|
| 339 |
+ k := cacheKeyFromConfig(p.config).String() |
|
| 340 |
+ if k == "" {
|
|
| 341 |
+ dgst, err := p.mainManifestKey(p.desc.Digest, p.platform) |
|
| 342 |
+ if err != nil {
|
|
| 343 |
+ return "", false, err |
|
| 344 |
+ } |
|
| 345 |
+ return dgst.String(), true, nil |
|
| 346 |
+ } |
|
| 347 |
+ |
|
| 348 |
+ return k, true, nil |
|
| 340 | 349 |
} |
| 341 | 350 |
|
| 342 | 351 |
func (p *puller) Snapshot(ctx context.Context) (cache.ImmutableRef, error) {
|
| ... | ... |
@@ -776,8 +789,8 @@ func cacheKeyFromConfig(dt []byte) digest.Digest {
|
| 776 | 776 |
if err != nil {
|
| 777 | 777 |
return digest.FromBytes(dt) |
| 778 | 778 |
} |
| 779 |
- if img.RootFS.Type != "layers" {
|
|
| 780 |
- return digest.FromBytes(dt) |
|
| 779 |
+ if img.RootFS.Type != "layers" || len(img.RootFS.DiffIDs) == 0 {
|
|
| 780 |
+ return "" |
|
| 781 | 781 |
} |
| 782 | 782 |
return identity.ChainID(img.RootFS.DiffIDs) |
| 783 | 783 |
} |