mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-21 17:38:10 +00:00
fix(release): upload_assets.py 按 go.mod 定位仓库根,不再数 dirname
脚本从 scripts/ 移到 deploy/scripts/ 后目录深度 1→2,而两层 dirname
是写死的,于是资产目录解析成 deploy/dist/release,上传直接
FileNotFoundError(v1.0.1 首次上传即因此失败)。
这与 v0.7.2 的 2c5f9ff 把 package/ 移到 deploy/packaging/ 打断
build.sh 的 PROJECT_ROOT 是同一个坑:目录搬家没更新相对路径。改成
向上找 go.mod,以后脚本放哪都不会错。
顺带把两个静默失败改为显式报错:目录不存在、目录下无可识别产物
(原先前者抛裸 FileNotFoundError,后者会打出 ALL OK 却一个都没传)。
This commit is contained in:
@ -66,19 +66,41 @@ def put_file(url: str, headers: dict, path: str) -> tuple[int, str]:
|
|||||||
return 0, f"{type(e).__name__}: {e}"
|
return 0, f"{type(e).__name__}: {e}"
|
||||||
|
|
||||||
|
|
||||||
|
def project_root() -> str:
|
||||||
|
"""向上找带 go.mod 的目录作为仓库根。
|
||||||
|
|
||||||
|
为何不数 dirname:本脚本初版在 scripts/(深度 1),移到 deploy/scripts/
|
||||||
|
(深度 2)后写死的两层 dirname 就指向了 deploy/dist/release,上传直接
|
||||||
|
FileNotFoundError。这正是 v0.7.2 那次 package/ → deploy/packaging/ 打断
|
||||||
|
PROJECT_ROOT 的同一个坑,改成按标记文件定位以后怎么挑位置都不会错。
|
||||||
|
"""
|
||||||
|
d = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
while d != os.path.dirname(d):
|
||||||
|
if os.path.exists(os.path.join(d, "go.mod")):
|
||||||
|
return d
|
||||||
|
d = os.path.dirname(d)
|
||||||
|
# 实在找不到(脚本被单独拷出仓库)就回退到 cwd,给 ASSET_DIR 一个机会
|
||||||
|
return os.getcwd()
|
||||||
|
|
||||||
|
|
||||||
def main() -> int:
|
def main() -> int:
|
||||||
if len(sys.argv) < 3:
|
if len(sys.argv) < 3:
|
||||||
print(__doc__)
|
print(__doc__)
|
||||||
return 2
|
return 2
|
||||||
tag, token = sys.argv[1], sys.argv[2]
|
tag, token = sys.argv[1], sys.argv[2]
|
||||||
outdir = os.environ.get("ASSET_DIR") or os.path.join(
|
outdir = os.environ.get("ASSET_DIR") or os.path.join(
|
||||||
os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
|
project_root(), "dist", "release"
|
||||||
"dist",
|
|
||||||
"release",
|
|
||||||
)
|
)
|
||||||
|
if not os.path.isdir(outdir):
|
||||||
|
print(f"error: 资产目录不存在: {outdir}")
|
||||||
|
print(" 用 ASSET_DIR=<目录> 显式指定,或先跑构建生成 dist/release/")
|
||||||
|
return 2
|
||||||
files = sys.argv[3:] or sorted(
|
files = sys.argv[3:] or sorted(
|
||||||
f for f in os.listdir(outdir) if is_artifact(f)
|
f for f in os.listdir(outdir) if is_artifact(f)
|
||||||
)
|
)
|
||||||
|
if not files:
|
||||||
|
print(f"error: {outdir} 下没有可识别的发布产物")
|
||||||
|
return 2
|
||||||
print(f"repo={REPO} tag={tag} dir={outdir}", flush=True)
|
print(f"repo={REPO} tag={tag} dir={outdir}", flush=True)
|
||||||
failed = []
|
failed = []
|
||||||
for name in files:
|
for name in files:
|
||||||
|
|||||||
Reference in New Issue
Block a user