1. Buat github action yml, keep-3-version.yml
name: 3 Version Keep Daily Image Cleanup

on:
  schedule:
    - cron: '02 02 * * *'
  workflow_dispatch:

jobs:
  ghcr-cleanup-image:
    name: ghcr keep only several tag and keep 3 version
    runs-on: self-hosted
    steps:
      - name: Delete old images
        uses: dataaxiom/ghcr-cleanup-action@v1
        with:
          token: ${{ secrets.GHCR_CLEANUP_PAT }}
          owner: your-org
          packages: 'repo-1,repo-2,repo-3,repo-4'
          #so it will keep main, latest, development, dev-test
          #it remove untagged image
          #if you use semantic, it will keep 3 latest version
          exclude-tags: main,dev*,latest
          keep-n-tagged: 3
          delete-untagged: true
          delete-partial-images: true
          dry-run: false
  1. Untuk token, buat “Tokens (classic)”, dengan scopes

    a. repo: semua

    b. write:packages

    c: read:packages

    d. delete:packages

  2. untuk action manual (workflow_dispatch), bakal muncul jika sudah push .yml ke branch default repo