mirror of
https://git.fightbot.fun/hxuanyu/FileRelay.git
synced 2026-02-15 13:01:42 +08:00
Initial commit
This commit is contained in:
69
scripts/build.sh
Normal file
69
scripts/build.sh
Normal file
@@ -0,0 +1,69 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 获取脚本所在目录并切换到项目根目录
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
# 设置变量
|
||||
APP_NAME="filerelay"
|
||||
OUTPUT_DIR="output"
|
||||
|
||||
# 定义目标平台
|
||||
PLATFORMS=(
|
||||
"linux/amd64"
|
||||
"linux/arm64"
|
||||
"windows/amd64"
|
||||
"windows/arm64"
|
||||
"darwin/amd64"
|
||||
"darwin/arm64"
|
||||
)
|
||||
|
||||
echo "开始构建 $APP_NAME 多平台二进制文件..."
|
||||
|
||||
# 清理 output 目录
|
||||
if [ -d "$OUTPUT_DIR" ]; then
|
||||
echo "正在清理 $OUTPUT_DIR 目录..."
|
||||
rm -rf "$OUTPUT_DIR"
|
||||
fi
|
||||
|
||||
mkdir -p "$OUTPUT_DIR"
|
||||
|
||||
# 前端构建
|
||||
echo "正在构建前端项目..."
|
||||
cd webapp
|
||||
npm install
|
||||
npm run build
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "前端构建失败,停止编译。"
|
||||
exit 1
|
||||
fi
|
||||
cd ..
|
||||
|
||||
# 循环编译各平台
|
||||
for PLATFORM in "${PLATFORMS[@]}"; do
|
||||
# 分离 OS 和 ARCH
|
||||
OS=$(echo $PLATFORM | cut -d'/' -f1)
|
||||
ARCH=$(echo $PLATFORM | cut -d'/' -f2)
|
||||
|
||||
# 设置输出名称
|
||||
OUTPUT_NAME="${APP_NAME}-${OS}-${ARCH}"
|
||||
if [ "$OS" = "windows" ]; then
|
||||
OUTPUT_NAME="${OUTPUT_NAME}.exe"
|
||||
fi
|
||||
|
||||
echo "正在编译 ${OS}/${ARCH}..."
|
||||
GOOS=$OS GOARCH=$ARCH go build -o "${OUTPUT_DIR}/${OUTPUT_NAME}" main.go
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo " ${OS}/${ARCH} 编译成功"
|
||||
# 压缩为 tar.gz
|
||||
tar -czf "${OUTPUT_DIR}/${OUTPUT_NAME}.tar.gz" -C "${OUTPUT_DIR}" "${OUTPUT_NAME}"
|
||||
# 删除原始二进制文件
|
||||
rm "${OUTPUT_DIR}/${OUTPUT_NAME}"
|
||||
else
|
||||
echo " ${OS}/${ARCH} 编译失败"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "----------------------------------------"
|
||||
echo "多平台打包完成!输出目录: $OUTPUT_DIR"
|
||||
ls -R "$OUTPUT_DIR"
|
||||
Reference in New Issue
Block a user