Skip to content

Commit f66ac77

Browse files
committed
fix: cleanup action now with direct gh api access
1 parent 5e7622f commit f66ac77

File tree

1 file changed

+39
-9
lines changed

1 file changed

+39
-9
lines changed

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

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,52 @@ 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-backend
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@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+
34+
# Get all ${{ env.TAG_PREFIX }}* tags and their version IDs, sorted by tag (descending)
35+
VERSIONS=$(gh api -H "Accept: application/vnd.github+json" \
36+
/orgs/${{ env.ORG }}/packages/container/${{ env.IMAGE_NAME }}/versions \
37+
--paginate | jq -r '.[] | select(.metadata.container.tags[] | startswith("${{ env.TAG_PREFIX }}")) | "\(.id) \(.metadata.container.tags[])"' | grep '^.* ${{ env.TAG_PREFIX }}' | sort -k2 -r)
38+
39+
# Get the lines to delete (skip the first ${{ env.KEEP_X_IMAGES }} versions)
40+
TO_DELETE=$(echo "$VERSIONS" | sed "1,${{ env.KEEP_X_IMAGES }}d")
41+
42+
echo "Deleting the following tags:"
43+
echo "$TO_DELETE" | awk '{print $2}'
44+
45+
while read -r line; do
46+
id=$(echo "$line" | awk '{print $1}')
47+
tag=$(echo "$line" | awk '{print $2}')
48+
echo "Deleting tag $tag (version ID $id)"
49+
gh api -X DELETE -H "Accept: application/vnd.github+json" \
50+
/orgs/${{ env.ORG }}/packages/container/${{ env.IMAGE_NAME }}/versions/$id || echo "Failed to delete version $id ($tag)"
51+
done <<< "$TO_DELETE"
52+
53+
- name: List remaining ${{ env.TAG_PREFIX }}* tags and their version IDs (debug)
54+
run: |
55+
gh api -H "Accept: application/vnd.github+json" \
56+
/orgs/${{ env.ORG }}/packages/container/${{ env.IMAGE_NAME }}/versions \
57+
--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)