cron-cleanup-stale.ymlΒΆ

name: "🧹 Prune stale data"
run-name: "${{ github.event_name == 'schedule' && '⏰ ' || '' }}🧹 Prune stale data"

on:
  schedule:
    - cron: "0 0 * * *"
  workflow_dispatch:

permissions:
  contents: read

jobs:
  stale:
    name: 🏷️ Close inactive issues and pull requests
    runs-on: ubuntu-26.04
    permissions:
      issues: write
      pull-requests: write

    steps:
      - name: 🏷️ Mark stale issues and pull requests
        uses: actions/stale@v10
        with:
          days-before-issue-stale: 90
          days-before-issue-close: 7
          stale-issue-label: "stale"
          stale-issue-message: >
            This issue has been marked as stale because it has had no activity
            for the last 90 days. It will be automatically closed in 7 days
            unless there is further activity.
          close-issue-message: >
            This issue has been automatically closed due to inactivity.

          days-before-pr-stale: 180
          days-before-pr-close: 30
          stale-pr-label: "stale"
          stale-pr-message: >
            This pull request has been marked as stale because it has had no
            activity for the last 180 days. It will be automatically closed in
            30 days unless there is further activity.
          close-pr-message: >
            This pull request has been automatically closed due to inactivity.

          remove-stale-when-updated: true

  delete-stale-branches:
    name: 🌿 Delete inactive branches
    runs-on: ubuntu-26.04
    permissions:
      contents: write
      issues: write

    steps:
      - name: 🌿 Delete branches inactive for 360 days
        uses: crs-k/stale-branches@e876b957ab08f0bad43c8cc271a22cdd7604bd09 # v9.0.1
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          days-before-stale: 350
          days-before-delete: 360

          branches-filter-regex: '^(?!main$|master$|develop$|dev$|release/|hotfix/)'

          compare-branches: info
          dry-run: false

  cleanup-ghcr-ci-images:
    name: πŸ“¦ Delete old GHCR CI images
    runs-on: ubuntu-26.04
    permissions:
      contents: read
      packages: write

    steps:
      - name: ⬇️ Checkout
        uses: actions/checkout@v7.0.0

      - name: πŸ“¦ Install project environment
        run: make install

      - name: πŸ“¦ Delete ci-* images older than 60 days
        shell: bash
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          ORG: infinito-nexus
          PACKAGE_PREFIX: core
          MAX_AGE_DAYS: 60
          TAG_PREFIX: ci-
        run: bash scripts/github/cleanup/ghcr_ci_images.sh