cron-images-cleanup-ci.ymlΒΆ

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