Files
Scoreboard/deploy/build.bat
T
AskaEth 7f9701c465 fix: 审查修复波次(P0x4 + P1x30+)
- domain/rules: 计分与排名解耦、破纪录按组别、tieBreak 生效、调整分不丢、移除 aggregate 假能力
- realtime: 新建 internal/dto,快照三项契约对齐,/ws 只认会话身份
- httpapi: 流水幂等、standings 整表载荷、广播接线、强制改密、XFF 防伪造、records 写入、审计、赛事包内容、发布前备份、result.points、实例列表
- web: FormData 上传、YAML 解析、快照归一化、大屏解析层、bootstrap 降级、访客判定、主题切换
- console: 优雅关闭握手、中文化、免验证改管理员账号、选屏与日志轮转修复
- docs: 用户文档三份 + README
- 主代理: 破纪录加分接线(levels 未加载导致恒 0)
2026-09-09 21:06:40 +08:00

91 lines
4.2 KiB
Batchfile
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@echo off
chcp 65001 >nul
REM Build Windows artifacts on the build machine (Meowhome).
REM Output:
REM dist\scoreboard.exe server (frontend embedded via go:embed)
REM dist\console\ Scoreboard Console installer + portable dir
setlocal
REM electron / electron-builder 的下载走国内镜像 + gh 代理,避免 GitHub 直连超时
set "ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/"
set "ELECTRON_BUILDER_BINARIES_MIRROR=https://gh-proxy.com/https://github.com/electron-userland/electron-builder-binaries/releases/download/"
set "CSC_IDENTITY_AUTO_DISCOVERY=false"
cd /d "%~dp0.."
echo === [1/4] git pull ===
git pull || exit /b 1
echo === [2/4] web deps + build ===
cd web
call pnpm install --frozen-lockfile || exit /b 1
call pnpm build || exit /b 1
cd ..
echo === [3/4] server build ===
cd server
if not exist ..\dist mkdir ..\dist
REM 版本号注入 /api/health:优先取最近的 git tag,没有 tag 时退到短哈希
set "APP_VERSION=dev"
for /f "delims=" %%I in ('git describe --tags --always 2^>nul') do set "APP_VERSION=%%I"
REM 内部署名从构建机本地文件注入(deploy\signature.local.txt 已 gitignore,不进公开仓库);
REM 文件不存在时二进制里也是空的,源码永远不含真实署名。
set "INTERNAL_SIGNATURE="
if exist "..\deploy\signature.local.txt" set /p INTERNAL_SIGNATURE=<"..\deploy\signature.local.txt"
if defined INTERNAL_SIGNATURE (
REM 单引号包裹整个 -X:署名里的空格不会被 ldflags 拆开(go 的 ldflags 解析器认单引号)
go build -ldflags "-X 'git.yeij.top/AskaEth/Scoreboard/server/internal/version.InternalSignature=%INTERNAL_SIGNATURE%' -X main.version=%APP_VERSION%" -o ..\dist\scoreboard.exe . || exit /b 1
echo internal signature injected
) else (
go build -ldflags "-X main.version=%APP_VERSION%" -o ..\dist\scoreboard.exe . || exit /b 1
echo no internal signature
)
cd ..
echo === [4/4] console package (electron-builder) ===
REM 安装器许可页顶部文案由本机署名生成(.nsh 是生成物,已 gitignore)
set "SIGNATURE_TEXT="
if exist "deploy\signature.local.txt" set /p SIGNATURE_TEXT=<"deploy\signature.local.txt"
> "console\resources\installer-signature.nsh" echo !macro customHeader
if defined SIGNATURE_TEXT (
>> "console\resources\installer-signature.nsh" echo !define MUI_LICENSEPAGE_TEXT_TOP "内部署名:%SIGNATURE_TEXT%"
) else (
>> "console\resources\installer-signature.nsh" echo !define MUI_LICENSEPAGE_TEXT_TOP "请阅读并接受许可协议"
)
>> "console\resources\installer-signature.nsh" echo !macroend
REM win.icon 由 electron-builder 内部调 rcedit 写进 PE 资源;
REM 它需要的 winCodeSign / nsis 从 gh-proxy 取,签名关闭。
taskkill /im "Scoreboard Console.exe" /f >nul 2>&1
taskkill /im scoreboard.exe /f >nul 2>&1
REM 部署包根目录要带 rules\ 与 使用说明.txt(devdocs 10 §4.4)。
REM rules\ 由 package.json 的 extraFiles 直接从仓库根拷入;
REM 使用说明.txt 是可选文档,只在 docs\ 下存在时才暂存到 console\extra\,
REM electron-builder 的 extraFiles 会把该目录内容平铺到部署包根目录。
if not exist "rules" echo 警告:rules\ 不存在,部署包将缺少规则包目录
if not exist "console\extra" mkdir "console\extra"
if exist "console\extra\使用说明.txt" del /q "console\extra\使用说明.txt"
if exist "docs\使用说明.txt" (
copy /y "docs\使用说明.txt" "console\extra\使用说明.txt" >nul
echo 使用说明.txt 已加入部署包(来源:docs\使用说明.txt)
) else (
if exist "docs\使用手册.md" (
REM 文档目录里只有 Markdown 版手册时,按部署包约定的文件名落盘
copy /y "docs\使用手册.md" "console\extra\使用说明.txt" >nul
echo 使用说明.txt 已加入部署包(来源:docs\使用手册.md)
) else (
echo docs\ 下没有 使用说明.txt / 使用手册.md,跳过(部署包不含使用说明.txt)
)
)
cd console
call pnpm install --frozen-lockfile || exit /b 1
call pnpm run dist || exit /b 1
cd ..
echo.
echo === 构建完成 ===
echo dist\scoreboard.exe 服务端
echo dist\console\ Console 安装包 + 免安装目录
dir /b dist\console
endlocal
exit /b 0