name: "🧹 Prune CI images" run-name: "${{ github.event_name == 'schedule' && '⏰ ' || '' }}🧹 Prune CI images" on: schedule: - cron: "0 0 * * 6" workflow_dispatch: inputs: days: description: "🧹 Delete CI images older than N days (default: 7)" required: false default: "7" type: string permissions: contents: read concurrency: group: images-cleanup-ci cancel-in-progress: false jobs: cleanup: name: 🧹 Delete old ci-* image versions runs-on: ubuntu-26.04 permissions: actions: read contents: read packages: write pull-requests: read steps: - uses: actions/checkout@v7.0.0 - name: 🔍 Resolve image metadata id: vars shell: bash run: | set -euo pipefail source scripts/meta/env/load.sh { echo "owner=$(scripts/meta/resolve/repository/owner.sh)" echo "repo_prefix=$(scripts/meta/resolve/repository/name.sh)" echo "distros=${INFINITO_DISTROS}" } >> "$GITHUB_OUTPUT" - name: 📦 Install jq shell: bash run: ./scripts/install/apt.sh jq - name: 🧹 Cleanup old ci-* versions shell: bash env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} OWNER: ${{ steps.vars.outputs.owner }} DAYS: ${{ github.event.inputs.days || '7' }} REPO_PREFIX: ${{ steps.vars.outputs.repo_prefix }} INFINITO_DISTROS: ${{ steps.vars.outputs.distros }} run: | set -euo pipefail ./scripts/image/cleanup.sh