Compare commits

...

1 Commits

Author SHA1 Message Date
chrome-storm-c442
b37e696094 v1.9.13: remove cleanup_gitea_releases — keep all Gitea releases
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 09:35:17 -05:00
3 changed files with 2 additions and 74 deletions

View File

@@ -182,9 +182,8 @@ def build():
# Auto-deploy: sync shared files so Claude Code always has the latest # Auto-deploy: sync shared files so Claude Code always has the latest
deploy_shared_files() deploy_shared_files()
# Publish release to Gitea + cleanup old remote releases # Publish release to Gitea
publish_gitea_release(dst) publish_gitea_release(dst)
cleanup_gitea_releases()
def _get_gitea_auth() -> dict: def _get_gitea_auth() -> dict:
@@ -312,77 +311,6 @@ def _version_key(path: str):
return (0, 0, 0) return (0, 0, 0)
def _tag_version_key(tag_name: str):
"""Extract (major, minor, patch) from tag like 'v1.9.5'."""
m = re.match(r'v(\d+)\.(\d+)\.(\d+)', tag_name)
if m:
return (int(m.group(1)), int(m.group(2)), int(m.group(3)))
return (0, 0, 0)
def cleanup_gitea_releases():
"""Keep the first release (v1.0.0) and the last 5 on Gitea, delete the rest + orphan tags."""
auth = _get_gitea_auth()
if not auth:
return
# --- Clean releases ---
try:
req = urllib.request.Request(f"{_GITEA_API}/releases?limit=50", headers=auth)
resp = urllib.request.urlopen(req, timeout=30)
releases = json.loads(resp.read())
except Exception as e:
print(f"Gitea release list failed: {e}")
return
keep_tags = set()
if len(releases) > 6:
releases.sort(key=lambda r: _tag_version_key(r.get("tag_name", "")))
first = releases[0]
last_5 = releases[-5:]
keep_ids = {first["id"]} | {r["id"] for r in last_5}
keep_tags = {first.get("tag_name")} | {r.get("tag_name") for r in last_5}
removed = []
for r in releases:
if r["id"] in keep_ids:
continue
try:
req = urllib.request.Request(
f"{_GITEA_API}/releases/{r['id']}", headers=auth, method="DELETE")
urllib.request.urlopen(req, timeout=15)
removed.append(r.get("tag_name", "?"))
except Exception as e:
print(f"Failed to delete Gitea release {r.get('tag_name')}: {e}")
if removed:
print(f"Cleaned {len(removed)} old Gitea releases: {', '.join(removed)}")
else:
keep_tags = {r.get("tag_name") for r in releases}
# --- Clean orphan tags (tags without releases) ---
try:
req = urllib.request.Request(f"{_GITEA_API}/tags?limit=50", headers=auth)
resp = urllib.request.urlopen(req, timeout=30)
tags = json.loads(resp.read())
except Exception:
return
removed_tags = []
for tag in tags:
name = tag.get("name", "")
if name in keep_tags:
continue
try:
req = urllib.request.Request(
f"{_GITEA_API}/tags/{name}", headers=auth, method="DELETE")
urllib.request.urlopen(req, timeout=10)
removed_tags.append(name)
except Exception:
pass
if removed_tags:
print(f"Cleaned {len(removed_tags)} orphan Gitea tags: {', '.join(removed_tags)}")
def cleanup_old_releases(): def cleanup_old_releases():
"""Keep the first release (v1.0.0) and the last 5 releases, delete the rest.""" """Keep the first release (v1.0.0) and the last 5 releases, delete the rest."""

View File

@@ -1,6 +1,6 @@
"""Version info for ServerManager.""" """Version info for ServerManager."""
__version__ = "1.9.12" __version__ = "1.9.13"
__app_name__ = "ServerManager" __app_name__ = "ServerManager"
__author__ = "aibot777" __author__ = "aibot777"
__description__ = "Desktop GUI for managing remote servers" __description__ = "Desktop GUI for managing remote servers"