mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-19 09:40:12 +00:00
ci: free gitee release storage before uploads
Co-authored-by: naiba/CloudCode <hi+cloudcode@nai.ba>
This commit is contained in:
+19
-19
@@ -60,7 +60,7 @@ def get_github_latest_release():
|
|||||||
print("No releases found.")
|
print("No releases found.")
|
||||||
|
|
||||||
|
|
||||||
def delete_gitee_releases(latest_id, client, uri, token):
|
def delete_gitee_releases(keep_id, keep_tag, client, uri, token):
|
||||||
get_data = {
|
get_data = {
|
||||||
'access_token': token
|
'access_token': token
|
||||||
}
|
}
|
||||||
@@ -70,28 +70,29 @@ def delete_gitee_releases(latest_id, client, uri, token):
|
|||||||
if release_response.status_code == 200:
|
if release_response.status_code == 200:
|
||||||
release_info = release_response.json()
|
release_info = release_response.json()
|
||||||
else:
|
else:
|
||||||
print(
|
raise ValueError(
|
||||||
f"Request failed with status code {release_response.status_code}")
|
f"List releases failed with status code {release_response.status_code}")
|
||||||
|
|
||||||
release_ids = []
|
release_ids = []
|
||||||
for block in release_info:
|
for block in release_info:
|
||||||
if 'id' in block:
|
release_id = block.get('id')
|
||||||
release_ids.append(block['id'])
|
release_tag = block.get('tag_name')
|
||||||
|
if release_id == keep_id or release_tag == keep_tag:
|
||||||
|
print(f'Keep current release {release_tag} #{release_id}.')
|
||||||
|
continue
|
||||||
|
if release_id is not None:
|
||||||
|
release_ids.append((release_id, release_tag))
|
||||||
|
|
||||||
print(f'Current release ids: {release_ids}')
|
print(f'Older release ids: {[release_id for release_id, _ in release_ids]}')
|
||||||
if latest_id in release_ids:
|
|
||||||
release_ids.remove(latest_id)
|
|
||||||
else:
|
|
||||||
print(f'Release #{latest_id} is not in the release list, skip deleting older releases.')
|
|
||||||
|
|
||||||
for id in release_ids:
|
for release_id, release_tag in release_ids:
|
||||||
release_uri = f"{uri}/{id}"
|
release_uri = f"{uri}/{release_id}"
|
||||||
delete_data = {
|
delete_data = {
|
||||||
'access_token': token
|
'access_token': token
|
||||||
}
|
}
|
||||||
delete_response = request_with_retries(client, 'DELETE', release_uri, params=delete_data)
|
delete_response = request_with_retries(client, 'DELETE', release_uri, params=delete_data)
|
||||||
if delete_response.status_code == 204:
|
if delete_response.status_code == 204:
|
||||||
print(f'Successfully deleted release #{id}.')
|
print(f'Successfully deleted older release {release_tag} #{release_id}.')
|
||||||
else:
|
else:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
f"Request failed with status code {delete_response.status_code}")
|
f"Request failed with status code {delete_response.status_code}")
|
||||||
@@ -129,6 +130,11 @@ def sync_to_gitee(tag: str, body: str, files: slice):
|
|||||||
release_id = release_info.get('id')
|
release_id = release_info.get('id')
|
||||||
|
|
||||||
print(f"Gitee release id: {release_id}")
|
print(f"Gitee release id: {release_id}")
|
||||||
|
|
||||||
|
# Free Gitee release storage before dashboard asset uploads. Gitee can time out
|
||||||
|
# while accepting large ZIPs if older release assets still consume the quota.
|
||||||
|
delete_gitee_releases(release_id, tag, api_client, release_api_uri, access_token)
|
||||||
|
|
||||||
asset_api_uri = f"{release_api_uri}/{release_id}/attach_files"
|
asset_api_uri = f"{release_api_uri}/{release_id}/attach_files"
|
||||||
uploaded_assets = get_gitee_asset_names(release_info)
|
uploaded_assets = get_gitee_asset_names(release_info)
|
||||||
|
|
||||||
@@ -141,12 +147,6 @@ def sync_to_gitee(tag: str, body: str, files: slice):
|
|||||||
upload_gitee_asset(api_client, asset_api_uri, release_api_uri, access_token, tag, file_path)
|
upload_gitee_asset(api_client, asset_api_uri, release_api_uri, access_token, tag, file_path)
|
||||||
uploaded_assets.add(asset_name)
|
uploaded_assets.add(asset_name)
|
||||||
|
|
||||||
# 仅保留最新 Release 以防超出 Gitee 仓库配额
|
|
||||||
try:
|
|
||||||
delete_gitee_releases(release_id, api_client, release_api_uri, access_token)
|
|
||||||
except ValueError as e:
|
|
||||||
print(e)
|
|
||||||
|
|
||||||
api_client.close()
|
api_client.close()
|
||||||
print("Sync is completed!")
|
print("Sync is completed!")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user