Skip to content

Commit 7dbc6d9

Browse files
fix(cleanup): fix multiplatform image handling
Signed-off-by: Aleksei Igrychev <aleksei.igrychev@palark.com>
1 parent c52634b commit 7dbc6d9

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

Diff for: pkg/cleaning/cleanup.go

+13-3
Original file line numberDiff line numberDiff line change
@@ -985,9 +985,19 @@ func (m *cleanupManager) protectRelativeStageDescSetByStageDesc(targetStageDesc
985985
targetStageDescSet := image.NewStageDescSet()
986986
if targetStageDesc.Info.IsIndex {
987987
for _, platformImageInfo := range targetStageDesc.Info.Index {
988-
stageID := platformImageInfo.Tag
989-
if platformStageDesc := m.stageManager.GetStageDescByStageID(stageID); platformStageDesc != nil {
990-
targetStageDescSet.Add(platformStageDesc)
988+
platformImageDigest := platformImageInfo.GetDigest()
989+
if platformImageDigest == "" {
990+
continue
991+
}
992+
993+
// platformImageInfo.Tag cannot be used as a stage ID because it matches the index manifest tag,
994+
// and the index manifest itself does not contain platform tag information.
995+
for platformStageDesc := range m.stageManager.GetStageDescSet().Iter() {
996+
if platformStageDesc.Info.GetDigest() == platformImageDigest {
997+
m.stageManager.MarkStageDescAsProtected(platformStageDesc, stage_manager.ProtectionReasonImageIndexPlatform, false)
998+
targetStageDescSet.Add(platformStageDesc)
999+
break
1000+
}
9911001
}
9921002
}
9931003
} else {

Diff for: pkg/cleaning/stage_manager/stages.go

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ var (
4040
ProtectionReasonImportSource = newProtectionReason("import source")
4141
ProtectionReasonDependencySource = newProtectionReason("dependency source")
4242
ProtectionReasonAncestor = newProtectionReason("ancestor")
43+
ProtectionReasonImageIndexPlatform = newProtectionReason("image index platform")
4344
ProtectionReasonNotFoundInRepo = newProtectionReason("not found in repo")
4445
)
4546

0 commit comments

Comments
 (0)