Skip to content

Commit 853e711

Browse files
n3rdc4ptnCopilot
andauthored
fix: add debug options to clean-main-images.yml (#133)
Co-authored-by: Copilot <[email protected]>
1 parent f0c1f46 commit 853e711

File tree

1 file changed

+56
-9
lines changed

1 file changed

+56
-9
lines changed

.github/workflows/clean-main-images.yml

Lines changed: 56 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,69 @@ on:
66
workflow_dispatch:
77

88
env:
9-
REGISTRY: ghcr.io/openmcp-project
9+
REGISTRY: ghcr.io
10+
ORG: openmcp-project
1011
IMAGE_NAME: mcp-ui-frontend
1112
KEEP_X_IMAGES: 5
13+
TAG_PREFIX: 'main-'
1214

1315
jobs:
1416
clean:
1517
name: 'Clean main images'
1618
runs-on: ubuntu-latest
1719
permissions:
1820
packages: write
21+
env:
22+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1923
steps:
20-
- name: Delete old main branch images
21-
uses: actions/delete-package-versions@e5bc658cc4c965c472efe991f8beea3981499c55 # v5
22-
with:
23-
package-name: ${{ env.IMAGE_NAME }}
24-
package-type: 'container'
25-
min-versions-to-keep: ${{ env.KEEP_X_IMAGES }}
26-
# Ignore any version that does NOT start with 'main-'
27-
ignore-versions: '^(?!main-).*$'
24+
- name: List all ${{ env.TAG_PREFIX }} tags and their version IDs (debug)
25+
run: |
26+
gh api -H "Accept: application/vnd.github+json" \
27+
/orgs/${{ env.ORG }}/packages/container/${{ env.IMAGE_NAME }}/versions \
28+
--paginate | jq -r '.[] | select(.metadata.container.tags[] | startswith("${{ env.TAG_PREFIX }}")) | "\(.id) \(.metadata.container.tags[])"' | grep '^.* ${{ env.TAG_PREFIX }}' | sort -k2 -r
29+
30+
- name: Delete old ${{ env.TAG_PREFIX }}* tags using GitHub API, keep ${{ env.KEEP_X_IMAGES }}
31+
run: |
32+
set -e
33+
set -o pipefail
34+
35+
# Get all ${{ env.TAG_PREFIX }}* tags and their version IDs, sorted by tag (descending)
36+
VERSIONS=$(gh api -H "Accept: application/vnd.github+json" \
37+
/orgs/${{ env.ORG }}/packages/container/${{ env.IMAGE_NAME }}/versions \
38+
--paginate | jq -r '.[] | select(.metadata.container.tags[] | startswith("${{ env.TAG_PREFIX }}")) | "\(.id) \(.metadata.container.tags[])"' | grep '^.* ${{ env.TAG_PREFIX }}' | sort -k2 -r)
39+
40+
# Get the lines to delete (skip the first ${{ env.KEEP_X_IMAGES }} versions)
41+
TO_DELETE=$(echo "$VERSIONS" | sed "1,${{ env.KEEP_X_IMAGES }}d")
42+
43+
echo "Deleting the following tags:"
44+
echo "$TO_DELETE" | awk '{print $2}'
45+
46+
if [ -z "$TO_DELETE" ]; then
47+
echo "No tags to delete."
48+
exit 0
49+
fi
50+
51+
FAILED_DELETIONS=""
52+
while read -r line; do
53+
id=$(echo "$line" | awk '{print $1}')
54+
tag=$(echo "$line" | awk '{print $2}')
55+
echo "Deleting tag $tag (version ID $id)"
56+
if ! gh api -X DELETE -H "Accept: application/vnd.github+json" \
57+
/orgs/${{ env.ORG }}/packages/container/${{ env.IMAGE_NAME }}/versions/$id; then
58+
echo "Failed to delete version $id ($tag)"
59+
FAILED_DELETIONS="${FAILED_DELETIONS}\n$id ($tag)"
60+
fi
61+
echo "Failed to delete version $id ($tag)"
62+
FAILED_DELETIONS="${FAILED_DELETIONS}\n$id ($tag)"
63+
fi
64+
done <<< "$TO_DELETE"
65+
66+
if [ -n "$FAILED_DELETIONS" ]; then
67+
echo -e "The following deletions failed:\n$FAILED_DELETIONS"
68+
exit 1
69+
fi
70+
- name: List remaining ${{ env.TAG_PREFIX }}* tags and their version IDs (debug)
71+
run: |
72+
gh api -H "Accept: application/vnd.github+json" \
73+
/orgs/${{ env.ORG }}/packages/container/${{ env.IMAGE_NAME }}/versions \
74+
--paginate | jq -r '.[] | select(.metadata.container.tags[] | startswith("${{ env.TAG_PREFIX }}")) | "\(.id) \(.metadata.container.tags[])"' | grep '^.* ${{ env.TAG_PREFIX }}' | sort -k2 -r

0 commit comments

Comments
 (0)