From b5aa207c2691263baa896685700387b9e8ec3b2d Mon Sep 17 00:00:00 2001 From: Anders da Silva Rytter Hansen Date: Thu, 7 May 2026 22:27:29 -0300 Subject: [PATCH] adjust api --- .forgejo/workflows/cleanup.yml | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/.forgejo/workflows/cleanup.yml b/.forgejo/workflows/cleanup.yml index 8fcd50d..6dc6e05 100644 --- a/.forgejo/workflows/cleanup.yml +++ b/.forgejo/workflows/cleanup.yml @@ -17,29 +17,27 @@ jobs: MIN_KEEP=50 TOKEN="${{ secrets.PACKAGE_TOKEN }}" - # Hent alle tags for imaget via Forgejo API - echo "=== Kalder API ===" - API_URL="https://${REGISTRY}/api/v1/packages/${OWNER}/container/${IMAGE}/tags" - echo "URL: ${API_URL}" - RAW=$(curl -s -H "Authorization: token ${TOKEN}" "${API_URL}") - echo "=== Råt API-svar ===" - echo "$RAW" - echo "==================" + # Hent alle pakker af typen container med dette navn, sorteret ældste først (via id) + # API returnerer en liste af package-objekter, hvert med "id" og "version" + RAW=$(curl -s -H "Authorization: token ${TOKEN}" \ + "https://${REGISTRY}/api/v1/packages/${OWNER}?type=container&q=${IMAGE}&limit=200") - TAGS=$(echo "$RAW" | tr ',' '\n' | grep '"name"' | sed 's/.*"name":"\([^"]*\)".*/\1/' | sort -r) + # Filtrer kun pakker med korrekt navn og udtræk id + created_at, sorter ældste først + IDS=$(echo "$RAW" | tr '{' '\n' | grep "\"name\":\"${IMAGE}\"" | \ + sed 's/.*"id":\([0-9]*\).*/\1/' | sort -n) - TOTAL=$(echo "$TAGS" | wc -l) - echo "Fundet ${TOTAL} tags totalt, beholder ${MIN_KEEP}" + TOTAL=$(echo "$IDS" | grep -c '[0-9]' || true) + echo "Fundet ${TOTAL} pakker totalt, beholder ${MIN_KEEP}" if [ "$TOTAL" -le "$MIN_KEEP" ]; then - echo "Ingen tags at slette" + echo "Ingen pakker at slette" exit 0 fi - # Slet tags ud over MIN_KEEP (ældste først) - TO_DELETE=$(echo "$TAGS" | tail -n +$((MIN_KEEP + 1))) - for TAG in $TO_DELETE; do - echo "Sletter tag: ${TAG}" + # Slet de ældste (laveste id'er) ud over MIN_KEEP + TO_DELETE=$(echo "$IDS" | head -n $(( TOTAL - MIN_KEEP ))) + for ID in $TO_DELETE; do + echo "Sletter pakke id: ${ID}" curl -s -X DELETE -H "Authorization: token ${TOKEN}" \ - "https://${REGISTRY}/api/v1/packages/${OWNER}/container/${IMAGE}/${TAG}" + "https://${REGISTRY}/api/v1/packages/${OWNER}/${ID}" done \ No newline at end of file