From 49e3d49fe30787107e1a74ca088c14bee7979de4 Mon Sep 17 00:00:00 2001 From: Aleksandr Mezin Date: Tue, 26 Dec 2023 03:55:36 +0200 Subject: [PATCH] Delete images older than 1 year --- README.md | 8 +++++--- cleanup.js | 8 ++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9ba756a..0825e0b 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,14 @@ For every repository: 1. Images created less than 1 day ago are kept -2. Images with no defined build date (cache?) are kept +2. Images created more than 1 year ago are deleted -3. Images with `org.opencontainers.image.version` label matching existing +3. Images with no defined build date (cache?) are kept + +4. Images with `org.opencontainers.image.version` label matching existing tags/branches or open pull requests are kept -4. Everything else is deleted +5. Everything else is deleted ## REST API pagination race condition diff --git a/cleanup.js b/cleanup.js index 4c65b1e..6c04b53 100755 --- a/cleanup.js +++ b/cleanup.js @@ -310,6 +310,9 @@ async function main() { const minAge = new Date(); minAge.setDate(minAge.getDate() - 1); + const maxAge = new Date(); + maxAge.setFullYear(minAge.getFullYear() - 1); + const shouldDelete = async (version, config) => { const created = Date.parse(config?.created); if (isNaN(created)) { @@ -322,6 +325,11 @@ async function main() { return false; } + if (created < maxAge) { + octokit.log.info(`Image ${version.displayImage} is too old`, created); + return true; + } + const labels = config?.config?.Labels; const refName = labels ? labels['org.opencontainers.image.version'] : null; octokit.log.debug(`Version of ${version.displayImage}: ${refName}`);