|
4 | 4 | schedule: |
5 | 5 | - cron: '5 1 * * *' |
6 | 6 | workflow_dispatch: |
| 7 | + inputs: |
| 8 | + dry-run: |
| 9 | + description: 'Dry run' |
| 10 | + required: false |
| 11 | + default: true |
| 12 | + type: 'boolean' |
7 | 13 |
|
8 | 14 | env: |
9 | 15 | REGISTRY: ghcr.io |
|
13 | 19 | TAG_PREFIX: 'main-' |
14 | 20 |
|
15 | 21 | 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 |
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 |
72 | | - |
73 | | - delete-untagged-images: |
74 | | - name: Delete Untagged Images |
| 22 | + clean: |
| 23 | + name: Clean main images |
75 | 24 | runs-on: ubuntu-latest |
76 | 25 | permissions: |
77 | 26 | packages: write |
78 | 27 | steps: |
79 | 28 | - uses: dataaxiom/ghcr-cleanup-action@v1 |
80 | 29 | with: |
81 | | - dry-run: true |
| 30 | + dry-run: ${{ github.event_name == 'workflow_dispatch' && inputs.dry-run == true }} |
82 | 31 | packages: ${{ env.IMAGE_NAME }} |
83 | 32 | delete-tags: main-* |
84 | 33 | delete-untagged: true |
|
0 commit comments