name: Clean Container Registry on: #schedule: # - cron: '39 21 * * *' workflow_dispatch: jobs: delete_untagged: name: Delete Untagged Packages runs-on: ubuntu-latest steps: - name: Delete Untagged Packages uses: Chizkiyahu/delete-untagged-ghcr-action@v3 with: token: ${{ secrets.PACKAGE_DELETER }} repository_owner: ${{ github.repository_owner }} repository: ${{ github.repository }} untagged_only: true owner_type: user delete_old_pr: name: Delete Old PR Packages runs-on: ubuntu-latest permissions: packages: read steps: - name: Get list of packages id: all_tags run: | curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer ${{ github.token }}" \ -H "X-GitHub-Api-Version: 2022-11-28" \ "https://api.github.com/user/packages/container/build-container-installer/versions" > all_packages.json curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer ${{ github.token }}" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/${{ github.repository }}/pulls | \ jq -r '.[] | select(.state == "open") | .number' | \ sed 's/^/pr-/g' > open_prs cat << EOF | python import json import re prs = open("open_prs", "r") open_prs = prs.readlines() open_prs = [x.strip() for x in open_prs] all_packages = open('all_packages.json') data = json.load(all_packages) delete_versions = open("delete_versions", "w") for i in data: delete = True for tag in i['metadata']['container']['tags']: if not re.match('pr-.*', tag): delete = False continue if tag in open_prs: delete = False if delete: print("delete", i['id']) delete_versions.write(str(i['id'])) delete_versions.write("\n") print(i['metadata']['container']['tags']) EOF for id in $(cat delete_versions) do curl -L \ -X DELETE \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer ${{ secrets.PACKAGE_DELETER }}" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/user/packages/container/build-container-installer/versions/${id} done #delete_old_branches: