TraceStudio/scripts/build_release.py
2026-01-12 21:51:45 +08:00

55 lines
1.5 KiB
Python

"""生成 release 包:
- 清理旧的 dist/
- 调用 prepare_dist.py --mode copy
- 复制 docker 配置到 dist/
- 打包为 release_YYYYmmdd_HHMMSS.zip
"""
import subprocess
import shutil
from pathlib import Path
import datetime
import sys
ROOT = Path(__file__).resolve().parents[1]
DIST = ROOT / "dist"
LOG = ROOT / "scripts" / "prepare_dist.log"
def run_prepare_dist():
cmd = [sys.executable, str(ROOT / "scripts" / "prepare_dist.py"), "--mode", "copy"]
print("Running:", " ".join(cmd))
subprocess.check_call(cmd, cwd=str(ROOT))
def clean_dist():
if DIST.exists():
print("Removing old dist/")
shutil.rmtree(DIST)
def copy_docker_configs():
# copy docker-compose and Dockerfile.opt files if present
targets = ["docker-compose.yml", "server/Dockerfile.opt", "web/Dockerfile.opt"]
for t in targets:
src = ROOT / t
if src.exists():
dest = DIST / src.name
dest.parent.mkdir(parents=True, exist_ok=True)
shutil.copy2(src, dest)
print(f"Copied {src} -> {dest}")
def make_zip():
ts = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
out = ROOT / f"release_{ts}.zip"
print(f"Creating {out}")
shutil.make_archive(str(out.with_suffix("")), 'zip', root_dir=str(DIST))
print("Done")
return out
def main():
clean_dist()
run_prepare_dist()
copy_docker_configs()
out = make_zip()
print("Release package:", out)
if __name__ == '__main__':
main()