Files
ddhv/build_go.sh
shishi 2f79b22936 feat: 系统调优 Go 版后端完整源码
- 19 个接口全部实测验收通过 (2026-08-08)
- 结构: main.go + core/consts + gsysctl + gtuner + server
- 含 build_go.sh 官方部署结构构建脚本 (amd64/arm64 交叉编译)
- 数据无缝衔接 Python 版遗留 (快照/state/审计日志)
- 备份自 156:/root/goddhv (2026-08-09)
2026-08-09 10:12:57 +08:00

81 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# GMSSH「系统调优」Go 版后端构建脚本
# 产出官方标准结构: dist/app/bin/{main, config.json, i18n/}
set -euo pipefail
export PATH=$PATH:/usr/local/go/bin
export GOPROXY=https://goproxy.cn,direct
CURDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$CURDIR"
# 架构: 默认 amd64, 可用 ARCH=arm64 交叉编译
ARCH="${ARCH:-amd64}"
DIST_BIN="$CURDIR/dist/app/bin"
echo "🚀 开始构建 Go 版后端 (arch=$ARCH)..."
# 1. 编译 main
echo "⚙️ 编译 main.go (GOOS=linux GOARCH=$ARCH)..."
GOOS=linux GOARCH="$ARCH" CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o "$DIST_BIN/main" .
if [ ! -f "$DIST_BIN/main" ]; then
echo "❌ 编译失败, 未找到产物"
exit 1
fi
echo "✅ 编译完成: $DIST_BIN/main ($(stat -c%s "$DIST_BIN/main") bytes)"
# 2. 生成 config.json (官方格式, socket=app.sock)
echo "📝 生成 config.json..."
mkdir -p "$DIST_BIN"
cat > "$DIST_BIN/config.json" <<'JSONEOF'
{
"test": {
"jsonrpc": {
"sockets": "app.sock"
},
"logger": {
"path": "logs/",
"file": "{Y-m-d}.log",
"level": "info",
"stdout": true,
"rotateBackupLimit": 7,
"rotateExpire": "1d"
}
},
"prod": {
"jsonrpc": {
"sockets": "app.sock"
},
"logger": {
"path": "../../logs/",
"file": "{Y-m-d}.log",
"level": "error",
"stdout": false,
"rotateBackupLimit": 30,
"rotateExpire": "30d"
}
}
}
JSONEOF
echo "✅ config.json 已生成"
# 3. 生成 i18n (基础国际化文件)
echo "📝 生成 i18n..."
mkdir -p "$DIST_BIN/i18n"
cat > "$DIST_BIN/i18n/zh-CN.ini" <<'INIIEOF'
REQUIRE_VALIDATION_TM="该参数不能为空"
STATUS_OK="操作成功"
INIIEOF
cat > "$DIST_BIN/i18n/en.ini" <<'INIIEOF'
REQUIRE_VALIDATION_TM="This parameter cannot be empty"
STATUS_OK=" Operation successful"
INIIEOF
echo "✅ i18n 已生成"
# 4. 赋权
chmod +x "$DIST_BIN/main"
echo ""
echo "✅ 构建完成! 产物结构:"
find "$CURDIR/dist/app/bin" -type f | sed "s|$CURDIR/||"