From 756c1fd17931588cd1140e7d4158979b1dc9b9a2 Mon Sep 17 00:00:00 2001 From: ytshen Date: Fri, 12 Apr 2024 22:50:36 +0800 Subject: [PATCH] auto rm release --- github_operations.py | 25 +++++++++++++++++++++++++ main.py | 1 + 2 files changed, 26 insertions(+) diff --git a/github_operations.py b/github_operations.py index 5013760..ec44819 100644 --- a/github_operations.py +++ b/github_operations.py @@ -102,6 +102,31 @@ def delete_cache(github_repository, github_token, remain_count=2): print(f'get caches failed: {e}') +def delete_release(github_repository, github_token, remain_count=2): + headers = github_api_headers(github_token=github_token) + get_release_url = (f'https://api.github.com/repos/{github_repository}' + f'/releases?per_page=100&page=1') + try: + releases_resp = requests.get(get_release_url, headers=headers) + releases = json.loads(releases_resp.content) + if len(releases) < remain_count: + return + delete_release_url = f'https://api.github.com/repos/{github_repository}/releases/' + for release in releases[remain_count:]: + release_tag = release.get('tag_name') + if release_id := release.get('id'): + try: + delete_release_resp = requests.delete(f'{delete_release_url}{release_id}', headers=headers) + if delete_release_resp.status_code == 204: + print(f'delete {release_tag} succeed') + else: + print(f'delete {release_tag} failed: {delete_release_resp.text}') + except Exception as e: + print(f'delete cache for {release_tag} failed: {e}') + except Exception as e: + print(f'get releases failed: {e}') + + def rate_limit(github_token): try: resp = requests.get('https://api.github.com/rate_limit', headers=github_api_headers(github_token=github_token)) diff --git a/main.py b/main.py index 3774961..6626ac5 100644 --- a/main.py +++ b/main.py @@ -253,6 +253,7 @@ if __name__ == '__main__': upload_file_name='addon_infos.json', upload_file=args.output, github_token=args.github_token) + delete_release(args.github_repository, github_token=args.github_token) update_cache(args.cache_directory, args.runtime_xpi_directory, args.cache_lockfile)