From f4397db869bf45713bc5a2c3afdd4694dafe835d Mon Sep 17 00:00:00 2001 From: Codex Bot Date: Sun, 1 Nov 2026 16:31:56 +0800 Subject: [PATCH] fix(ci): preserve dependency parent layers during review cleanup --- scripts/cleanup-review-images.sh | 3 ++- scripts/test-review-image-cleanup.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/cleanup-review-images.sh b/scripts/cleanup-review-images.sh index db4b1ad..411db07 100644 --- a/scripts/cleanup-review-images.sh +++ b/scripts/cleanup-review-images.sh @@ -14,5 +14,6 @@ for repository in creative-studio-review creative-wiki-tests creative-wiki-revie echo "Keeping container-referenced review image: $tag" continue fi - docker image rm "$tag" + # Preserve parent layers so unchanged dependency installs stay cached. + docker image rm --no-prune "$tag" done diff --git a/scripts/test-review-image-cleanup.py b/scripts/test-review-image-cleanup.py index 8e91729..c2cb74f 100644 --- a/scripts/test-review-image-cleanup.py +++ b/scripts/test-review-image-cleanup.py @@ -38,11 +38,11 @@ class ReviewCleanupTests(unittest.TestCase): 'DOCKER_CALLS': str(calls), 'REVIEW_SHA': sha, **extra}) return result.returncode, [json.loads(line) for line in calls.read_text().splitlines()] if calls.exists() else [] - def test_removes_only_exact_review_tags_without_force(self): + def test_removes_only_exact_review_tags_without_force_and_keeps_parent_cache(self): code, calls = self.run_cleanup() self.assertEqual(code, 0) self.assertEqual([args for args in calls if args[:2] == ['image', 'rm']], [ - ['image', 'rm', name + ':' + SHA] for name in + ['image', 'rm', '--no-prune', name + ':' + SHA] for name in ['creative-studio-review', 'creative-wiki-tests', 'creative-wiki-review']]) self.assertFalse(any('-f' in args or 'prune' in args or 'volume' in args for args in calls))