|
1 | 1 | name: "Prune old GHCR images"
|
2 | 2 |
|
3 | 3 | on:
|
4 |
| - # 1) Run daily at 02:00 UTC |
5 | 4 | schedule:
|
6 |
| - - cron: '0 2 * * *' |
7 |
| - # 2) Also run on every push to main (or your default branch) |
| 5 | + - cron: '0 2 * * *' # daily at 02:00 UTC |
8 | 6 | push:
|
9 |
| - branches: |
10 |
| - - docker |
11 |
| - |
| 7 | + branches: [ docker ] |
12 | 8 | permissions:
|
13 |
| - contents: read # for listing versions |
14 |
| - packages: write # for deleting package versions |
| 9 | + contents: read |
| 10 | + packages: write |
15 | 11 |
|
16 | 12 | jobs:
|
17 | 13 | prune:
|
18 | 14 | runs-on: ubuntu-latest
|
19 | 15 |
|
20 | 16 | steps:
|
21 |
| - - name: Install jq and GitHub CLI |
| 17 | + - name: Install dependencies |
22 | 18 | run: |
|
23 | 19 | sudo apt-get update
|
24 | 20 | sudo apt-get install -y jq
|
25 | 21 | curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \
|
26 | 22 | | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
|
27 |
| - echo \ |
28 |
| - "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] \ |
29 |
| - https://cli.github.com/packages stable main" \ |
30 |
| - | sudo tee /etc/apt/sources.list.d/github-cli.list |
| 23 | + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \ |
| 24 | + | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null |
31 | 25 | sudo apt-get update
|
32 | 26 | sudo apt-get install -y gh
|
33 | 27 |
|
34 |
| -
|
35 | 28 | - name: Delete non-latest versions
|
36 | 29 | env:
|
37 | 30 | OWNER: ${{ github.repository_owner }}
|
38 | 31 | IMAGE: deep-learning-crash-course
|
39 | 32 | run: |
|
| 33 | + echo "Fetching all versions of $OWNER/$IMAGE…" |
40 | 34 | gh api -H "Accept: application/vnd.github.v3+json" \
|
41 |
| - /users/$OWNER/packages/container/$IMAGE/versions \ |
| 35 | + /orgs/$OWNER/packages/container/$IMAGE/versions \ |
42 | 36 | | jq -c '.[]' \
|
43 | 37 | | while read version; do
|
44 | 38 | id=$(echo "$version" | jq -r '.id')
|
|
47 | 41 | echo "Deleting version $id (tags: $tags)"
|
48 | 42 | gh api -X DELETE \
|
49 | 43 | -H "Accept: application/vnd.github.v3+json" \
|
50 |
| - /users/$OWNER/packages/container/$IMAGE/versions/$id |
| 44 | + /orgs/$OWNER/packages/container/$IMAGE/versions/$id |
51 | 45 | fi
|
52 | 46 | done
|
0 commit comments