From f87c68ea682de3b0545b206557a17affcdf2be3a Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Tue, 3 Feb 2026 00:14:39 +0100 Subject: Add workflow to clean old GitHub Actions caches Adds a scheduled GitHub Actions workflow (.github/workflows/cleanup_caches.yml) that runs weekly (and via workflow_dispatch) to delete Actions caches not accessed in the last 3 days. The job uses the gh CLI with the repository token and actions: write permission to list caches, filter by last_accessed_at against a 3-day cutoff, and delete matching cache IDs. --- .github/workflows/cleanup_caches.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/cleanup_caches.yml (limited to '.github') diff --git a/.github/workflows/cleanup_caches.yml b/.github/workflows/cleanup_caches.yml new file mode 100644 index 00000000..dcf50fce --- /dev/null +++ b/.github/workflows/cleanup_caches.yml @@ -0,0 +1,31 @@ +name: Cleanup Caches +on: + schedule: + - cron: '0 3 * * 0' # every Sunday + workflow_dispatch: + +jobs: + cleanup: + runs-on: ubuntu-latest + permissions: + actions: write + steps: + - name: Delete caches older than 3 days + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + CUTOFF_DATE=$(date -d "3 days ago" -Ins --utc | sed 's/+0000/Z/') + echo "Deleting caches older than: $CUTOFF_DATE" + + CACHE_IDS=$(gh api --paginate repos/${{ github.repository }}/actions/caches \ + --jq ".actions_caches[] | select(.last_accessed_at < \"$CUTOFF_DATE\") | .id" 2>/dev/null) + + if [ -z "$CACHE_IDS" ]; then + echo "No old caches found to delete." + else + echo "$CACHE_IDS" | while read CACHE_ID; do + echo "Deleting cache: $CACHE_ID" + gh api -X DELETE repos/${{ github.repository }}/actions/caches/$CACHE_ID + done + echo "Old caches deleted successfully." + fi \ No newline at end of file -- cgit v1.2.3