Skip to content

Commit 0a45989

Browse files
committed
fix: changed to manual api calls
1 parent 50f0846 commit 0a45989

File tree

1 file changed

+31
-28
lines changed

1 file changed

+31
-28
lines changed

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

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,45 +6,48 @@ 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
11-
FULL_IMAGE_NAME: openmcp-project/mcp-ui-frontend
1212
KEEP_X_IMAGES: 5
13+
TAG_PREFIX: 'main-'
1314

1415
jobs:
1516
clean:
1617
name: 'Clean main images'
1718
runs-on: ubuntu-latest
1819
permissions:
1920
packages: write
21+
env:
22+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2023
steps:
21-
- name: Log in to GitHub Container Registry
22-
uses: docker/login-action@v3
23-
with:
24-
registry: ghcr.io
25-
username: ${{ github.actor }}
26-
password: ${{ secrets.GITHUB_TOKEN }}
27-
28-
- name: List images before cleanup (debug)
24+
- name: List all ${{ env.TAG_PREFIX }} tags and their version IDs (debug)
2925
run: |
30-
echo "Listing images before cleanup:"
3126
gh api -H "Accept: application/vnd.github+json" \
32-
/users/${{ github.repository_owner }}/packages/container/${{ env.IMAGE_NAME }}/versions | jq '.[].metadata.container.tags'
33-
env:
34-
GH_TOKEN: ${{ github.token }}
35-
36-
- name: Delete old main branch images
37-
uses: actions/delete-package-versions@v5
38-
with:
39-
package-name: ${{ env.IMAGE_NAME }}
40-
package-type: 'container'
41-
min-versions-to-keep: ${{ env.KEEP_X_IMAGES }}
42-
ignore-versions: '^(?!main-).*$'
43-
44-
- name: List images after cleanup (debug)
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 IDs to delete (skip the first ${{ env.KEEP_X_IMAGES }} versions)
40+
IDS_TO_DELETE=$(echo "$VERSIONS" | awk '{print $1}' | sed "1,${{ env.KEEP_X_IMAGES }}d" | sort -u)
41+
42+
echo "Version IDs to delete: $IDS_TO_DELETE"
43+
for id in $IDS_TO_DELETE; do
44+
echo "Deleting version ID $id"
45+
gh api -X DELETE -H "Accept: application/vnd.github+json" \
46+
/orgs/${{ env.ORG }}/packages/container/${{ env.IMAGE_NAME }}/versions/$id || echo "Failed to delete version $id"
47+
done
48+
49+
- name: List remaining ${{ env.TAG_PREFIX }}* tags and their version IDs (debug)
4550
run: |
46-
echo "Listing images after cleanup:"
4751
gh api -H "Accept: application/vnd.github+json" \
48-
/users/${{ github.repository_owner }}/packages/container/${{ env.IMAGE_NAME }}/versions | jq '.[].metadata.container.tags'
49-
env:
50-
GH_TOKEN: ${{ github.token }}
52+
/orgs/${{ env.ORG }}/packages/container/${{ env.IMAGE_NAME }}/versions \
53+
--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)