feat(build): 支持 build tag 版本注入并清理历史二进制
- ./run.sh build 仅输出项目根目录 ./aiops,构建前清理 backend/aiops-* - 新增 ./run.sh build tag v1.0.1,通过 ldflags 注入 Version/BuildTime/GitCommit - 支持 ./aiops version 子命令查看编译版本 - 删除误提交的 backend/aiops-cgo,gitignore 忽略 backend/aiops-*
This commit is contained in:
1 parent
1fd9a631e5
commit
8be51ac514
4 files changed
+67
-16
No files matched your search
@@ -319,6 +319,7 @@ clean_go_artifacts() {
|
||||
rm -f "$STANDALONE_BIN_PATH"
|
||||
rm -f "$SCRIPT_DIR/$BACKEND_DIR/$STANDALONE_BIN"
|
||||
rm -f "$SCRIPT_DIR/$BACKEND_DIR/$BACKEND_BIN"
|
||||
rm -f "$SCRIPT_DIR/$BACKEND_DIR"/aiops-*
|
||||
}
|
||||
|
||||
# 构建前端并同步到 backend/static(二进制 / embed 镜像共用)// Logan.Li
|
||||
@@ -432,23 +433,43 @@ ensure_go_path() {
|
||||
fi
|
||||
}
|
||||
|
||||
# 编译独立二进制(含 embed 前端)// Logan.Li
|
||||
# 解析编译版本号(显式 tag 优先,否则取 git describe)// Logan.Li
|
||||
resolve_build_version() {
|
||||
local explicit="${1:-}"
|
||||
if [ -n "$explicit" ]; then
|
||||
BUILD_VERSION="$explicit"
|
||||
elif git describe --tags --always --dirty 2>/dev/null | grep -q .; then
|
||||
BUILD_VERSION=$(git describe --tags --always --dirty 2>/dev/null)
|
||||
else
|
||||
BUILD_VERSION="dev"
|
||||
fi
|
||||
BUILD_TIME=$(date -u '+%Y-%m-%dT%H:%M:%SZ')
|
||||
GIT_COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
||||
}
|
||||
|
||||
# 编译独立二进制(含 embed 前端,输出到项目根目录 ./aiops)// Logan.Li
|
||||
build_standalone_binary() {
|
||||
local version_tag="${1:-}"
|
||||
ensure_go_path || return 1
|
||||
build_frontend_embed
|
||||
ensure_binary_config
|
||||
clean_go_artifacts
|
||||
resolve_build_version "$version_tag"
|
||||
cd "$SCRIPT_DIR/$BACKEND_DIR"
|
||||
info "编译中..."
|
||||
info "编译中 (version=$BUILD_VERSION)..."
|
||||
local ldflags="-w -s"
|
||||
ldflags+=" -X main.Version=${BUILD_VERSION}"
|
||||
ldflags+=" -X main.BuildTime=${BUILD_TIME}"
|
||||
ldflags+=" -X main.GitCommit=${GIT_COMMIT}"
|
||||
CGO_ENABLED=1 GOPROXY=https://goproxy.cn,direct GONOSUMCHECK='*' GOTOOLCHAIN=go1.24.0 \
|
||||
go build -ldflags="-w -s" -o "$STANDALONE_BIN_PATH" .
|
||||
go build -ldflags="$ldflags" -o "$STANDALONE_BIN_PATH" .
|
||||
if [ ! -f "$STANDALONE_BIN_PATH" ]; then
|
||||
error "编译失败"
|
||||
return 1
|
||||
fi
|
||||
local bin_size
|
||||
bin_size=$(du -h "$STANDALONE_BIN_PATH" | cut -f1)
|
||||
success "编译完成: ./$STANDALONE_BIN ($bin_size)"
|
||||
success "编译完成: ./$STANDALONE_BIN ($bin_size, $BUILD_VERSION)"
|
||||
cd "$SCRIPT_DIR"
|
||||
return 0
|
||||
}
|
||||
@@ -698,10 +719,22 @@ cmd_build() {
|
||||
build_standalone_binary || exit 1
|
||||
echo ""
|
||||
info "使用方法:"
|
||||
echo " ./run.sh binary upgrade # 停服重编译并后台启动"
|
||||
echo " ./$STANDALONE_BIN --port 8080 # 前台启动"
|
||||
echo " ./$STANDALONE_BIN --mode local # 本地模式 (SQLite + redka)"
|
||||
echo " ./$STANDALONE_BIN --config config.yaml # 使用配置文件"
|
||||
echo " ./$STANDALONE_BIN version # 查看版本"
|
||||
echo " ./run.sh binary upgrade # 停服重编译并后台启动"
|
||||
echo " ./$STANDALONE_BIN --port 8080 # 前台启动"
|
||||
echo " ./$STANDALONE_BIN --mode local # 本地模式 (SQLite + redka)"
|
||||
echo " ./$STANDALONE_BIN --config config.yaml # 使用配置文件"
|
||||
;;
|
||||
tag)
|
||||
local version_tag=${2:-}
|
||||
if [ -z "$version_tag" ]; then
|
||||
error "请指定版本号,例如: ./run.sh build tag v1.0.1"
|
||||
exit 1
|
||||
fi
|
||||
banner "========== 编译独立二进制 ($version_tag) =========="
|
||||
build_standalone_binary "$version_tag" || exit 1
|
||||
echo ""
|
||||
success "版本已写入二进制,验证: ./$STANDALONE_BIN version"
|
||||
;;
|
||||
agent)
|
||||
banner "========== 编译 Agent =========="
|
||||
@@ -729,9 +762,10 @@ cmd_build() {
|
||||
;;
|
||||
help|--help|-h)
|
||||
echo "编译命令:"
|
||||
echo " ./run.sh build 编译独立二进制 aiops (默认 SQLite)"
|
||||
echo " ./run.sh build agent 交叉编译 Agent (amd64+arm64)"
|
||||
echo " ./run.sh build frontend 构建前端生产包"
|
||||
echo " ./run.sh build 编译独立二进制 ./aiops (输出到项目根目录)"
|
||||
echo " ./run.sh build tag v1.0.1 指定版本号编译 (./aiops version 可查看)"
|
||||
echo " ./run.sh build agent 交叉编译 Agent (amd64+arm64)"
|
||||
echo " ./run.sh build frontend 构建前端生产包"
|
||||
;;
|
||||
*)
|
||||
error "未知构建目标: $target"
|
||||
@@ -1208,7 +1242,8 @@ cmd_help() {
|
||||
echo " ./run.sh kubernetes build 仅构建 embed 镜像"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}编译 & 独立二进制${NC}"
|
||||
echo " ./run.sh build 编译独立二进制 ./$STANDALONE_BIN"
|
||||
echo " ./run.sh build 编译独立二进制 ./$STANDALONE_BIN (仅根目录)"
|
||||
echo " ./run.sh build tag v1.0.1 指定版本号编译"
|
||||
echo " ./run.sh binary upgrade 停服→清旧→重编译→后台启动(生产升级)"
|
||||
echo " ./run.sh binary start|stop|status 进程管理"
|
||||
echo " ./run.sh binary [args] 前台启动(调试)"
|
||||
|
||||
Reference in new issue
Block a user