Skip to content

Commit 87c00ac

Browse files
authored
fix: changed to new action for cleanup (#8)
1 parent c4b37cb commit 87c00ac

File tree

1 file changed

+16
-53
lines changed

1 file changed

+16
-53
lines changed

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

Lines changed: 16 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -4,68 +4,31 @@ on:
44
schedule:
55
- cron: "5 1 * * *"
66
workflow_dispatch:
7+
inputs:
8+
dry-run:
9+
description: "Dry run"
10+
required: false
11+
default: true
12+
type: "boolean"
713

814
env:
9-
REGISTRY: ghcr.io
10-
ORG: openmcp-project
1115
IMAGE_NAME: mcp-ui-backend
1216
KEEP_X_IMAGES: 5
1317
TAG_PREFIX: "main-"
1418

1519
jobs:
1620
clean:
17-
name: "Clean main images"
21+
name: Clean main images
1822
runs-on: ubuntu-latest
1923
permissions:
2024
packages: write
21-
env:
22-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2325
steps:
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-
done <<< "$TO_DELETE"
62-
63-
if [ -n "$FAILED_DELETIONS" ]; then
64-
echo -e "The following deletions failed:\n$FAILED_DELETIONS"
65-
exit 1
66-
fi
67-
- name: List remaining ${{ env.TAG_PREFIX }}* tags and their version IDs (debug)
68-
run: |
69-
gh api -H "Accept: application/vnd.github+json" \
70-
/orgs/${{ env.ORG }}/packages/container/${{ env.IMAGE_NAME }}/versions \
71-
--paginate | jq -r '.[] | select(.metadata.container.tags[] | startswith("${{ env.TAG_PREFIX }}")) | "\(.id) \(.metadata.container.tags[])"' | grep '^.* ${{ env.TAG_PREFIX }}' | sort -k2 -r
26+
- uses: dataaxiom/ghcr-cleanup-action@cd0cdb900b5dbf3a6f2cc869f0dbb0b8211f50c4 #v1
27+
with:
28+
dry-run: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.dry-run == 'true' }}
29+
packages: ${{ env.IMAGE_NAME }}
30+
delete-tags: ${{ env.TAG_PREFIX }}
31+
delete-untagged: true
32+
keep-n-tagged: ${{ env.KEEP_X_IMAGES }}
33+
delete-ghost-images: true
34+
delete-partial-images: true

0 commit comments

Comments
 (0)