From e112e1231e1127f36104c538c687ec3f3206f575 Mon Sep 17 00:00:00 2001 From: Clement Tsang <34804052+ClementTsang@users.noreply.github.com> Date: Fri, 13 Jan 2023 01:45:11 -0500 Subject: [PATCH] ci: add schedule to clear PR caches (#973) --- .github/workflows/clear-workflow-cache.yml | 6 +++++- scripts/clear_cache.py | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/.github/workflows/clear-workflow-cache.yml b/.github/workflows/clear-workflow-cache.yml index b4d1a4c2..dc1249c8 100644 --- a/.github/workflows/clear-workflow-cache.yml +++ b/.github/workflows/clear-workflow-cache.yml @@ -12,6 +12,8 @@ on: pull_request: types: - closed + schedule: + - cron: "0 11 * * *" jobs: clear-cache: @@ -25,7 +27,9 @@ jobs: fetch-depth: 1 - run: | - if [[ -z "${{ github.event.inputs.id }}" ]]; then + if [[ -n "${{ github.event.schedule }}" ]]; then + python ./scripts/clear_cache.py keep-master + elif [[ -z "${{ github.event.inputs.id }}" ]]; then python ./scripts/clear_cache.py ${{ github.event.pull_request.number }} else python ./scripts/clear_cache.py ${{ github.event.inputs.id }} diff --git a/scripts/clear_cache.py b/scripts/clear_cache.py index ac1c99b1..2c40f76c 100644 --- a/scripts/clear_cache.py +++ b/scripts/clear_cache.py @@ -53,6 +53,23 @@ def main(): print("URLError with delete.") else: print("Successfully deleted cache ID {}!".format(id)) + elif args[1] == "keep-main" or args[1] == "keep-master": + print("Clearing all but default branch cache.") + with urlopen(cache_list_request(key)) as response: + response = json.load(response) + caches = response["actions_caches"] + for cache in caches: + if not ("master" in cache["ref"] or "main" in cache["ref"]): + id = cache["id"] + try: + print("Deleting ID {}...".format(id)) + urlopen(delete_cache_request(key, id)) + except HTTPError as e: + print("HTTPError with delete, error code {}.".format(e.code)) + except URLError as _: + print("URLError with delete.") + else: + print("Successfully deleted cache ID {}!".format(id)) elif args[1] == "main" or args[1] == "master" or args[1] == "all": print("Clearing all caches.") with urlopen(cache_list_request(key)) as response: