55 lines
1.8 KiB
Bash
55 lines
1.8 KiB
Bash
#!/bin/bash
|
||
# build-docker.sh - 用 Docker 为三种架构分别打包
|
||
# 前提:本机安装了 Docker + QEMU(用于跨架构)
|
||
# 安装 QEMU:docker run --privileged --rm tonistiigi/binfmt --install all
|
||
set -euo pipefail
|
||
|
||
PLATFORMS=("linux/amd64" "linux/arm64" "linux/arm/v7")
|
||
ARCH_NAMES=("x86_64" "arm64" "armhf")
|
||
|
||
echo "开始多架构打包..."
|
||
|
||
for i in "${!PLATFORMS[@]}"; do
|
||
PLATFORM="${PLATFORMS[$i]}"
|
||
ARCH_NAME="${ARCH_NAMES[$i]}"
|
||
OUTPUT="releases/nas-media-player-${ARCH_NAME}"
|
||
|
||
echo ""
|
||
echo "========================================="
|
||
echo " 打包架构: ${PLATFORM} → ${ARCH_NAME}"
|
||
echo "========================================="
|
||
|
||
docker run --rm \
|
||
--platform "${PLATFORM}" \
|
||
-v "$(pwd):/workspace" \
|
||
-w /workspace \
|
||
python:3.11-slim \
|
||
bash -c "
|
||
set -e
|
||
echo '--- 安装系统依赖 ---'
|
||
apt-get update -qq && apt-get install -y -q binutils
|
||
|
||
echo '--- 安装 Python 依赖 ---'
|
||
pip install --upgrade pip -q
|
||
pip install pyinstaller fastapi 'uvicorn[standard]' aiofiles \
|
||
pydantic python-multipart httptools -q
|
||
|
||
echo '--- 执行打包 ---'
|
||
pyinstaller nas-media-player.spec --clean --noconfirm
|
||
|
||
echo '--- 复制产物 ---'
|
||
mkdir -p releases
|
||
cp dist/nas-media-player releases/nas-media-player-${ARCH_NAME}
|
||
chmod +x releases/nas-media-player-${ARCH_NAME}
|
||
echo '产物大小:' \$(du -sh releases/nas-media-player-${ARCH_NAME})
|
||
"
|
||
|
||
echo "✅ ${ARCH_NAME} 打包完成 → ${OUTPUT}"
|
||
done
|
||
|
||
echo ""
|
||
echo "========================================="
|
||
echo "🎉 所有架构打包完成!"
|
||
ls -lh releases/
|
||
echo "========================================="
|