#!/bin/bash # 编译脚本 - 打包成服务端可执行文件 echo "开始编译 Go 项目..." # 设置编译参数 APP_NAME="software-download-center" VERSION=$(date +%Y%m%d_%H%M%S) BUILD_DIR="build" OUTPUT_DIR="${BUILD_DIR}/output" # 创建输出目录 mkdir -p ${OUTPUT_DIR} # 编译不同平台的可执行文件 echo "编译 Windows 版本..." GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o ${OUTPUT_DIR}/${APP_NAME}_windows_amd64.exe . echo "编译 Linux 版本..." GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ${OUTPUT_DIR}/${APP_NAME}_linux_amd64 . echo "编译 macOS 版本..." GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" -o ${OUTPUT_DIR}/${APP_NAME}_darwin_amd64 . GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o ${OUTPUT_DIR}/${APP_NAME}_darwin_arm64 . # 复制必要文件 echo "复制必要文件..." cp -r public ${OUTPUT_DIR}/ 2>/dev/null || true cp -r views ${OUTPUT_DIR}/ 2>/dev/null || true cp README.md ${OUTPUT_DIR}/ 2>/dev/null || true cp ADMIN.md ${OUTPUT_DIR}/ 2>/dev/null || true # 创建启动脚本 cat > ${OUTPUT_DIR}/start.sh << 'EOF' #!/bin/bash # Linux/macOS 启动脚本 PORT=${PORT:-3355} echo "启动服务器,端口: $PORT" export PORT=$PORT ./software-download-center_linux_amd64 EOF cat > ${OUTPUT_DIR}/start.bat << 'EOF' @echo off REM Windows 启动脚本 set PORT=3355 if not "%PORT%"=="" set PORT=%PORT% echo 启动服务器,端口: %PORT% set PORT=%PORT% software-download-center_windows_amd64.exe EOF chmod +x ${OUTPUT_DIR}/start.sh chmod +x ${OUTPUT_DIR}/*.exe 2>/dev/null || true echo "" echo "编译完成!" echo "输出目录: ${OUTPUT_DIR}" echo "" echo "可执行文件列表:" ls -lh ${OUTPUT_DIR}/*.exe ${OUTPUT_DIR}/*_linux_amd64 ${OUTPUT_DIR}/*_darwin_* 2>/dev/null | awk '{print $9, "(" $5 ")"}' echo "" echo "使用方法:" echo " Windows: 运行 start.bat 或直接运行 .exe 文件" echo " Linux: 运行 ./start.sh 或直接运行可执行文件" echo " macOS: 运行 ./start.sh 或直接运行可执行文件"