# TopFans Backend Makefile # 用于简化开发流程 .PHONY: help install-swagger gen-swagger update-swagger start-swagger start-all stop-all clean build run all loadgen-build loadgen-test loadgen-vet loadgen-ci # 默认目标 help: @echo "TopFans Backend - 可用命令:" @echo "" @echo "Swagger 相关:" @echo " make install-swagger - 安装 Swagger 依赖" @echo " make gen-swagger - 生成 Swagger 文档" @echo " make update-swagger - 更新 Swagger 文档(代码修改后)" @echo " make start-swagger - 启动 Gateway 并打开 Swagger UI" @echo "" @echo "服务管理:" @echo " make start-all - 启动所有服务(含 Swagger)" @echo " make stop-all - 停止所有服务" @echo " make restart-all - 重启所有服务(含重新生成 Swagger)" @echo "" @echo "开发相关:" @echo " make build - 构建 Gateway" @echo " make run - 运行 Gateway" @echo " make all - 安装依赖 + 生成文档 + 构建" @echo "" @echo "压测工具:" @echo " make loadgen-build - 编译 seed + loadgen 到 bin/" @echo " make loadgen-test - 运行 loadgen 单元测试" @echo " make loadgen-vet - go vet 静态检查" @echo "" @echo "清理:" @echo " make clean - 清理生成的文件" @echo "" @echo "Swagger 相关:" @echo " make install-swagger - 安装 Swagger 依赖" @echo " make gen-swagger - 生成 Swagger 文档" @echo " make update-swagger - 更新 Swagger 文档(代码修改后)" @echo " make start-swagger - 启动 Gateway 并打开 Swagger UI" @echo "" @echo "开发相关:" @echo " make build - 构建 Gateway" @echo " make run - 运行 Gateway" @echo " make all - 安装依赖 + 生成文档 + 构建" @echo "" @echo "压测工具:" @echo " make loadgen-build - 编译 seed + loadgen 到 bin/" @echo " make loadgen-test - 运行 loadgen 单元测试" @echo " make loadgen-vet - go vet 静态检查" @echo "" @echo "清理:" @echo " make clean - 清理生成的文件" # 安装 Swagger 依赖 install-swagger: @echo "安装 Swagger 依赖..." @bash install-swagger-deps.sh # 生成 Swagger 文档 gen-swagger: @echo "生成 Swagger 文档..." @bash gen-swagger.sh # 更新 Swagger 文档 update-swagger: @echo "更新 Swagger 文档..." @bash update-swagger.sh # 启动所有服务(含 Swagger) start-all: @echo "启动所有服务(含 Swagger)..." @bash start-all.sh # 停止所有服务 stop-all: @echo "停止所有服务..." @bash stop-all.sh # 重启所有服务(含重新生成 Swagger) restart-all: stop-all start-all # 构建 Gateway build: @echo "构建 Gateway..." @cd backend/gateway && go build -o gateway . # 完整编译验证: 编译所有包(含未被 main 包 import 的 client 库 + 所有测试文件) # 用 `go test -run='^$'` 的副作用:它会编译所有包和测试文件,但 `-run='^$'` 匹配空串 → 0 个测试运行 # 这是覆盖 client RPC 库、未被依赖的 service 包的唯一标准做法 # 普通 `go build ./...` 不会扫到这些包,容易漏改 build-all: @echo "完整编译验证(覆盖所有包,含 client 库)..." @go test -count=1 -run='^$$' ./... # 运行 Gateway run: @echo "运行 Gateway..." @cd backend/gateway && ./gateway # 清理生成的文件 clean: @echo "清理生成的文件..." @rm -rf backend/gateway/docs/*.go @rm -rf backend/gateway/docs/*.json @rm -rf backend/gateway/docs/*.yaml @rm -rf backend/bin/ @echo "✅ 清理完成" # ==================== Loadgen / 压测工具 ==================== # 编译 seed 和 loadgen 二进制到 bin/ loadgen-build: @echo "编译 loadgen 工具..." @mkdir -p bin @go build -ldflags="-s -w" -o bin/seed ./scripts/loadgen/seed/ @go build -ldflags="-s -w" -o bin/loadgen ./scripts/loadgen/loadgen/ @echo "✅ seed + loadgen → bin/" # 运行 loadgen 单元测试 (当前 23 个测试, 应全过) loadgen-test: @echo "运行 loadgen 单元测试..." @go test -count=1 ./scripts/loadgen/... # go vet 静态检查 loadgen-vet: @echo "go vet loadgen..." @go vet ./scripts/loadgen/... # loadgen 完整 CI 入口: vet + test + build loadgen-ci: loadgen-vet loadgen-test loadgen-build # 全部:安装依赖 + 生成文档 + 构建 all: install-swagger gen-swagger build @echo "" @echo "✅ 所有步骤完成!" @echo " 现在可以运行: make start-swagger"