summaryrefslogtreecommitdiffstats
path: root/.github/workflows/clear-workflow-cache.yml
blob: 2ea06991aea81fe35c2b73875f64224866d1dd54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Simple job to clear the cache used by a workflow. This automatically runs when a PR is closed/merged
# to clean up the corresponding PR's cache.

name: "clear workflow cache"

on:
  workflow_dispatch:
    inputs:
      id:
        description: "Which id to clear. Type main/master/all to clean all, and keep-main/keep-master to clean all but the main branch."
        required: false
  pull_request:
    types:
      - closed
  schedule:
    - cron: "0 11 * * 0"

jobs:
  clear-cache:
    runs-on: ubuntu-latest
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
        with:
          fetch-depth: 1

      # We run each script twice with a small delay in between to try and catch everything.
      - name: Clear cache
        run: |
          if [[ -n "${{ github.event.schedule }}" ]]; then
            python ./scripts/clear_cache.py keep-master
            sleep 5
            python ./scripts/clear_cache.py keep-master
          elif [[ -z "${{ github.event.inputs.id }}" ]]; then
            python ./scripts/clear_cache.py ${{ github.event.pull_request.number }}
            sleep 5
            python ./scripts/clear_cache.py ${{ github.event.pull_request.number }}
          else
            python ./scripts/clear_cache.py ${{ github.event.inputs.id }}
            sleep 5
            python ./scripts/clear_cache.py ${{ github.event.inputs.id }}
          fi