Files
BiliNote/backend/build.sh
huangjianwu f6a3438079 feat(build): 全面优化打包流程,Docker 镜像自动发布到 GHCR
Docker 优化:
- Dockerfile 层缓存(requirements/lockfile 先复制再安装)
- ARG 可配置镜像源,国际用户可覆盖为默认源
- 前端 Dockerfile 改用 corepack + frozen-lockfile
- 精简 .dockerignore,排除 .git 和 Tauri 构建产物

CI/CD 优化:
- docker-build 自动推送到 GHCR,支持 amd64/arm64 双架构
- 桌面端 CI 增加 pip/pnpm/cargo 缓存,升级 actions 版本
- Python 版本对齐为 3.11,增加 Linux 构建矩阵
- build.sh 加 -y 覆盖标志

文档更新:
- README Docker 部署简化为 docker pull + docker run

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 17:48:34 +08:00

59 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
# uncomment this for debugging
# set -x
# 切到项目根(假设脚本放在 script/ 目录)
cd "$(dirname "$0")/.."
echo "当前工作目录:$(pwd)"
# 清理旧的构建
echo "清理旧的构建..."
rm -rf backend/dist backend/build ./BillNote_frontend/src-tauri/bin/*
echo "清理完成。"
TARGET_TRIPLE=$(rustc -Vv | grep host | cut -f2 -d' ')
echo "Detected target triple: $TARGET_TRIPLE"
# --- 核心修改部分开始 ---
# 步骤 1: 为了避免 PyInstaller 的解析歧义,我们先手动复制文件
echo "为打包准备 .env 文件..."
cp .env.example backend/.env
# 步骤 2: PyInstaller 打包,直接添加已存在的 .env 文件
echo "开始 PyInstaller 打包..."
pyinstaller \
-y \
--name BiliNoteBackend \
--paths backend \
--distpath ./BillNote_frontend/src-tauri/bin \
--workpath backend/build \
--specpath backend \
--hidden-import uvicorn \
--hidden-import fastapi \
--hidden-import starlette \
--add-data "app/db/builtin_providers.json:." \
--add-data ".env:." \
"$(pwd)/backend/main.py"
# 步骤 3: 清理在项目根目录创建的临时 .env 文件
echo "清理临时的 .env 文件..."
rm backend/.env
# --- 核心修改部分结束 ---
# 重命名主执行文件以包含目标平台信息
mv \
./BillNote_frontend/src-tauri/bin/BiliNoteBackend/BiliNoteBackend\
./BillNote_frontend/src-tauri/bin/BiliNoteBackend/BiliNoteBackend-$TARGET_TRIPLE
echo "PyInstaller 打包完成。"
echo "打包后的目录内容:"
ls -l ./BillNote_frontend/src-tauri/bin/BiliNoteBackend
echo "请检查 src-tauri/bin/BiliNoteBackend 目录,确认其中包含了名为 .env 的【文件】。"