Skip to content

Commit 3f651ad

Browse files
committed
GHCR に残すイメージを直近 10 世代までにする
公開パッケージなので容量・転送は無料枠を消費しないが、版は放っておくと際限なく 積み上がる(`latest` を付け替えても前の版は SHA タグ付きで残る)。一覧が読めなくなり、 どれが生きているか分からなくなるのを防ぐための掃除。 **actions/delete-package-versions は使わない。** このリポジトリはマルチアーキで、 1 つのタグが manifest list + アーキごとの子イメージで構成される。あちらは子イメージを 「タグ無しの版」として消すため、残したはずのタグが壊れる(既知の不具合)。 dataaxiom/ghcr-cleanup-action は manifest list を理解して親子まとめて扱う。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 070e1db commit 3f651ad

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

.github/workflows/docker-publish.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,3 +170,31 @@ jobs:
170170
labels: ${{ steps.meta.outputs.labels }}
171171
cache-from: type=gha,scope=db-init
172172
cache-to: type=gha,mode=max,scope=db-init
173+
174+
# 古い版を消して直近 10 世代だけ残す。
175+
#
176+
# 公開パッケージなので GHCR の容量・転送は無料枠を消費しないが、版は放っておくと
177+
# 際限なく積み上がる(`latest` を付け替えても前の版は SHA タグ付きで残る)。
178+
# 一覧が読めなくなるのと、どれが生きているか分からなくなるのを防ぐための掃除。
179+
#
180+
# **専用のジョブにして、両方の push が終わってから走らせる。** db-init のジョブは
181+
# 本体のビルドと並行に走るので、そちらに相乗りさせると「新しい版が出来る前に掃除する」
182+
# 順序になりうる。
183+
#
184+
# **actions/delete-package-versions は使わない。** このリポジトリはマルチアーキで、
185+
# 1 つのタグが manifest list + アーキごとの子イメージで構成される。あちらは
186+
# 子イメージを「タグ無しの版」として消してしまい、残したはずのタグが壊れる。
187+
# この action は manifest list を理解して親子まとめて扱う。
188+
cleanup:
189+
needs: [merge, build-and-push-db-init]
190+
runs-on: ubuntu-latest
191+
permissions:
192+
packages: write
193+
steps:
194+
- name: 古いイメージを削除して直近 10 世代だけ残す
195+
uses: dataaxiom/ghcr-cleanup-action@v1
196+
with:
197+
packages: travel-log,travel-log-db-init
198+
keep-n-tagged: 10
199+
delete-untagged: true
200+
token: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)