diff options
author | Clement Tsang <34804052+ClementTsang@users.noreply.github.com> | 2022-11-06 03:44:02 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-06 03:44:02 -0500 |
commit | 7ae8e66a3a43d126e95d0ce977be93ed4e4949f6 (patch) | |
tree | 7f1a55bf27aeed38758cfb146603cc4df0d9f458 /scripts | |
parent | 29bc0b67bae1598cae1fa5202dae3999c7c05f69 (diff) |
ci: add cache clearing to PR merges (#874)
* ci: add cache clearing to PR merges
* some renaming
* small change to force cache
* add manual run option
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/clear_cache.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/scripts/clear_cache.py b/scripts/clear_cache.py new file mode 100644 index 00000000..167a12de --- /dev/null +++ b/scripts/clear_cache.py @@ -0,0 +1,58 @@ +#!/bin/python3 + +# A simple script to clean caches matching a PR ID. +# +# Expects a GitHub token in the environment variables as GITHUB_TOKEN. + +import os +import json +import sys +from urllib.error import HTTPError, URLError + +from urllib.request import Request, urlopen + +URL = "https://api.github.com/repos/ClementTsang/bottom/actions/caches" + + +def cache_list_request(key): + request = Request(URL, method="GET") + request.add_header("Accept", "application/vnd.github+json") + request.add_header("Authorization", "Bearer {}".format(key)) + return request + + +def delete_cache_request(key, id): + request = Request("{}/{}".format(URL, id), method="DELETE") + request.add_header("Accept", "application/vnd.github+json") + request.add_header("Authorization", "Bearer {}".format(key)) + return request + + +def main(): + + args = sys.argv + env = os.environ + + key = env["GITHUB_TOKEN"] + pr_id = args[1] + ref = "refs/pull/{}/merge".format(pr_id) + + with urlopen(cache_list_request(key)) as response: + response = json.load(response) + caches = response["actions_caches"] + for cache in caches: + if cache["ref"] == 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)) + + +if __name__ == "__main__": + main() |