#!/usr/bin/env bash # fetch-windows-staged.sh — 发版时从 NAS gitea 暂存 Release 拉 Windows 安装器。 # # 用途:deploy-client.yml 的 build-windows-ci job(仅当 WINDOWS_SOURCE=github 时启用) # 调用此脚本,按发版 tag(client-vX.Y.Z) 的**同一版本号**去找 `winstage-vX.Y.Z`, # 把 jiu-windows-x64-setup.exe 下到 dist/,供后续 upload-artifact → release/deploy 使用。 # # **版本强匹配**:找不到对应版本的暂存包 → 硬失败并提示先在 GitHub 构建该版本, # 绝不静默发出旧版/错版 Windows 包。 # # 需要 env:FORGEJO_URL、FORGEJO_TOKEN、GITEA_REPOSITORY。 set -euo pipefail . "$(dirname "$0")/lib-forgejo.sh" TAG="$1" VER="$(ver_from_tag "$TAG")" STAGE_TAG="winstage-v${VER}" NAME="jiu-windows-x64-setup.exe" echo "==> fetch-windows-staged: 发版版本=${VER},找暂存 ${STAGE_TAG}" base="${FORGEJO_URL}/api/v1/repos/${GITEA_REPOSITORY}" mkdir -p dist if ! info=$(curl -kfsS -H "Authorization: token ${FORGEJO_TOKEN}" "${base}/releases/tags/${STAGE_TAG}" 2>/dev/null); then cat >&2 <&2 exit 1 fi echo "==> fetch-windows-staged: 下载 ${dl} → dist/${NAME}" curl -kfsSL -H "Authorization: token ${FORGEJO_TOKEN}" "$dl" -o "dist/${NAME}" ls -lh "dist/${NAME}" # 完整性校验:安装器至少应有 1MB,防重定向页/截断被当成有效包发出去。 sz=$(wc -c < "dist/${NAME}") if [ "$sz" -lt 1000000 ]; then echo "ERROR: 下载的 ${NAME} 仅 ${sz} 字节,疑似重定向页/损坏,拒绝发版。" >&2 exit 1 fi echo "==> fetch-windows-staged: done(版本 ${VER} 匹配)"