chore: upload_assets.py 默认包含原生安装包

默认文件筛选原来只匹配 tar.gz/zip/SHA256SUMS,deb/rpm/pkg/setup.exe
必须逐个显式传参才会上传(v0.1.0 与 v0.1.1 都是分两趟传的)。
改为按发布产物后缀白名单筛选;用 -setup.exe 而非裸 .exe,避免误收
bin/ 下的裸二进制。
This commit is contained in:
JianFeeeee
2026-09-03 07:30:53 +08:00
parent f9f18ae13c
commit 609f0df517

View File

@ -2,7 +2,8 @@
"""上传 release 资产到 gitcode两步取签名 URL → PUT 到 OBS
用法: upload_assets.py <version> <token> [file...]
不传 file 时上传该版本目录下所有 tar.gz/zip 与 SHA256SUMS。
不传 file 时上传该版本目录下全部发布产物:
tar.gz / zip / deb / rpm / pkg / -setup.exe / SHA256SUMS
"""
import json
import os
@ -38,6 +39,19 @@ def put_file(url: str, headers: dict, path: str) -> tuple[int, str]:
return e.code, e.read().decode("utf-8", "replace")[:300]
# 发布产物后缀:免安装包 + 原生安装包。
# 注意 -setup.exe 而不是裸 .exe避开 bin/ 里的裸二进制。
ARTIFACT_SUFFIXES = (
".tar.gz", ".zip", # 免安装
".deb", ".rpm", ".pkg", # linux / macOS 安装包
"-setup.exe", # windows 安装器
)
def is_artifact(name: str) -> bool:
return name == "SHA256SUMS" or name.endswith(ARTIFACT_SUFFIXES)
def main() -> int:
if len(sys.argv) < 3:
print(__doc__)
@ -47,10 +61,7 @@ def main() -> int:
os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
"dist", "artifacts", version,
)
files = sys.argv[3:] or sorted(
f for f in os.listdir(outdir)
if f.endswith((".tar.gz", ".zip")) or f == "SHA256SUMS"
)
files = sys.argv[3:] or sorted(f for f in os.listdir(outdir) if is_artifact(f))
failed = 0
for name in files:
path = os.path.join(outdir, name)