28
28
sudo apt-get update
29
29
sudo apt-get install -y gh
30
30
31
- - name : Delete all but the newest version for CPU & GPU images
31
+ - name : Delete all non-`:latest` versions
32
32
env :
33
33
GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
34
34
OWNER : ${{ github.repository_owner }}
@@ -42,27 +42,24 @@ jobs:
42
42
-H "Accept: application/vnd.github.v3+json" \
43
43
/orgs/$OWNER/packages/container/$IMAGE/versions)
44
44
45
- # pick most recent by creation date
46
- newest_id=$( echo "$versions" \
47
- | jq -r 'sort_by(.created_at ) | reverse | .[0].id')
48
- echo "🛡 Keeping version $newest_id for $IMAGE"
45
+ # Only delete versions *not* tagged "latest"
46
+ echo "$versions" \
47
+ | jq -c '.[] | select((.metadata.container.tags // [] ) | index("latest") | not)' \
48
+ | while read version; do
49
49
50
- # delete every version except the newest
51
- echo "$versions" | jq -c '.[]' | while read version; do
52
- id=$(echo "$version" | jq -r '.id')
53
- if [[ "$id" != "$newest_id" ]]; then
54
- echo "→ Deleting version $id of $IMAGE"
50
+ id=$(echo "$version" | jq -r '.id')
51
+ tags=$(echo "$version" | jq -r '.metadata.container.tags[]')
52
+ echo "→ Deleting version $id (tags: $tags)"
55
53
for attempt in 1 2 3; do
56
54
if gh api -X DELETE \
57
55
-H "Accept: application/vnd.github.v3+json" \
58
56
/orgs/$OWNER/packages/container/$IMAGE/versions/$id; then
59
57
echo " ✅ Deleted $id"
60
58
break
61
59
else
62
- echo " ⚠️ Attempt $attempt failed, retrying in $((5*attempt))s …"
60
+ echo " ⚠️ Attempt $attempt failed, retrying…"
63
61
sleep $((5*attempt))
64
62
fi
65
63
done
66
- fi
67
- done
68
- done
64
+ done
65
+ done
0 commit comments