Files
stoatchat/.github/workflows/docker-cleanup.yaml
2026-05-20 19:58:18 +01:00

57 lines
1.6 KiB
YAML

name: Docker PR Image Cleanup
on:
pull_request:
types:
- closed
permissions:
contents: read
packages: write
concurrency:
group: docker-cleanup-${{ github.event.pull_request.number }}
cancel-in-progress: false
jobs:
enumerate:
runs-on: ubuntu-latest
if: ${{ !github.event.pull_request.head.repo.fork }}
outputs:
packages: ${{ steps.list.outputs.packages }}
steps:
- id: list
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ORG: stoatchat
REPO: ${{ github.repository }}
run: |
set -euo pipefail
packages=$(gh api --paginate \
"/orgs/${ORG}/packages?package_type=container" \
--jq "[.[] | select(.repository.full_name == \"${REPO}\") | .name]")
echo "packages=${packages}" >> "$GITHUB_OUTPUT"
cleanup:
needs: enumerate
runs-on: ubuntu-latest
if: ${{ needs.enumerate.outputs.packages != '[]' }}
strategy:
fail-fast: false
matrix:
package: ${{ fromJSON(needs.enumerate.outputs.packages) }}
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ORG: stoatchat
PACKAGE: ${{ matrix.package }}
TAG: pr-${{ github.event.pull_request.number }}
run: |
set -euo pipefail
gh api --paginate \
"/orgs/${ORG}/packages/container/${PACKAGE}/versions" \
--jq ".[] | select(.metadata.container.tags | index(\"${TAG}\")) | .id" \
| while read -r id; do
gh api -X DELETE "/orgs/${ORG}/packages/container/${PACKAGE}/versions/${id}"
done