Skip to content

Commit 21bd075

Browse files
committed
feat: switch to multi-arch supporting action
1 parent 29202c9 commit 21bd075

File tree

1 file changed

+65
-49
lines changed

1 file changed

+65
-49
lines changed

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

Lines changed: 65 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -13,59 +13,75 @@ env:
1313
TAG_PREFIX: 'main-'
1414

1515
jobs:
16-
clean:
17-
name: 'Clean main images'
18-
runs-on: ubuntu-latest
19-
permissions:
20-
packages: write
21-
env:
22-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
23-
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
16+
# clean:
17+
# name: 'Clean main images'
18+
# runs-on: ubuntu-latest
19+
# permissions:
20+
# packages: write
21+
# env:
22+
# GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
23+
# 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
2934

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
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)
3439

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)
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")
3942

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")
43+
# echo "Deleting the following tags:"
44+
# echo "$TO_DELETE" | awk '{print $2}'
4245

43-
echo "Deleting the following tags:"
44-
echo "$TO_DELETE" | awk '{print $2}'
46+
# if [ -z "$TO_DELETE" ]; then
47+
# echo "No tags to delete."
48+
# exit 0
49+
# fi
4550

46-
if [ -z "$TO_DELETE" ]; then
47-
echo "No tags to delete."
48-
exit 0
49-
fi
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"
5062

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"
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
6272

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
73+
delete-untagged-images:
74+
name: Delete Untagged Images
75+
runs-on: ubuntu-latest
76+
permissions:
77+
packages: write
78+
steps:
79+
- uses: dataaxiom/ghcr-cleanup-action@v1
80+
with:
81+
dry-run: true
82+
packages: ${{ env.IMAGE_NAME }}
83+
delete-tags: main-*
84+
delete-untagged: true
85+
keep-n-tagged: ${{ env.KEEP_X_IMAGES }}
86+
delete-ghost-images: true
87+
delete-partial-images: true

0 commit comments

Comments
 (0)