init
This commit is contained in:
212
Makefile
Normal file
212
Makefile
Normal file
@@ -0,0 +1,212 @@
|
||||
# OpenAI 多密钥代理服务器 Makefile (Go版本)
|
||||
|
||||
# 变量定义
|
||||
BINARY_NAME=openai-proxy
|
||||
MAIN_PATH=./cmd/main.go
|
||||
BUILD_DIR=./build
|
||||
VERSION=2.0.0
|
||||
LDFLAGS=-ldflags "-X main.Version=$(VERSION) -s -w"
|
||||
|
||||
# 默认目标
|
||||
.PHONY: all
|
||||
all: clean build
|
||||
|
||||
# 构建
|
||||
.PHONY: build
|
||||
build:
|
||||
@echo "🔨 构建 $(BINARY_NAME)..."
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
go build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME) $(MAIN_PATH)
|
||||
@echo "✅ 构建完成: $(BUILD_DIR)/$(BINARY_NAME)"
|
||||
|
||||
# 构建所有平台
|
||||
.PHONY: build-all
|
||||
build-all: clean
|
||||
@echo "🔨 构建所有平台版本..."
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
|
||||
# Linux AMD64
|
||||
GOOS=linux GOARCH=amd64 go build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-linux-amd64 $(MAIN_PATH)
|
||||
|
||||
# Linux ARM64
|
||||
GOOS=linux GOARCH=arm64 go build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-linux-arm64 $(MAIN_PATH)
|
||||
|
||||
# macOS AMD64
|
||||
GOOS=darwin GOARCH=amd64 go build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-amd64 $(MAIN_PATH)
|
||||
|
||||
# macOS ARM64 (Apple Silicon)
|
||||
GOOS=darwin GOARCH=arm64 go build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-arm64 $(MAIN_PATH)
|
||||
|
||||
# Windows AMD64
|
||||
GOOS=windows GOARCH=amd64 go build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-windows-amd64.exe $(MAIN_PATH)
|
||||
|
||||
@echo "✅ 所有平台构建完成"
|
||||
|
||||
# 运行
|
||||
.PHONY: run
|
||||
run:
|
||||
@echo "🚀 启动服务器..."
|
||||
go run $(MAIN_PATH)
|
||||
|
||||
# 开发模式运行
|
||||
.PHONY: dev
|
||||
dev:
|
||||
@echo "🔧 开发模式启动..."
|
||||
go run -race $(MAIN_PATH)
|
||||
|
||||
# 测试
|
||||
.PHONY: test
|
||||
test:
|
||||
@echo "🧪 运行测试..."
|
||||
go test -v -race -coverprofile=coverage.out ./...
|
||||
|
||||
# 测试覆盖率
|
||||
.PHONY: coverage
|
||||
coverage: test
|
||||
@echo "📊 生成测试覆盖率报告..."
|
||||
go tool cover -html=coverage.out -o coverage.html
|
||||
@echo "✅ 覆盖率报告生成: coverage.html"
|
||||
|
||||
# 基准测试
|
||||
.PHONY: bench
|
||||
bench:
|
||||
@echo "⚡ 运行基准测试..."
|
||||
go test -bench=. -benchmem ./...
|
||||
|
||||
# 代码检查
|
||||
.PHONY: lint
|
||||
lint:
|
||||
@echo "🔍 代码检查..."
|
||||
@if command -v golangci-lint >/dev/null 2>&1; then \
|
||||
golangci-lint run; \
|
||||
else \
|
||||
echo "⚠️ golangci-lint 未安装,跳过代码检查"; \
|
||||
echo "安装命令: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest"; \
|
||||
fi
|
||||
|
||||
# 格式化代码
|
||||
.PHONY: fmt
|
||||
fmt:
|
||||
@echo "🎨 格式化代码..."
|
||||
go fmt ./...
|
||||
@if command -v goimports >/dev/null 2>&1; then \
|
||||
goimports -w .; \
|
||||
else \
|
||||
echo "💡 建议安装 goimports: go install golang.org/x/tools/cmd/goimports@latest"; \
|
||||
fi
|
||||
|
||||
# 整理依赖
|
||||
.PHONY: tidy
|
||||
tidy:
|
||||
@echo "📦 整理依赖..."
|
||||
go mod tidy
|
||||
go mod verify
|
||||
|
||||
# 安装依赖
|
||||
.PHONY: deps
|
||||
deps:
|
||||
@echo "📥 安装依赖..."
|
||||
go mod download
|
||||
|
||||
# 清理
|
||||
.PHONY: clean
|
||||
clean:
|
||||
@echo "🧹 清理构建文件..."
|
||||
rm -rf $(BUILD_DIR)
|
||||
rm -f coverage.out coverage.html
|
||||
|
||||
# 安装到系统
|
||||
.PHONY: install
|
||||
install: build
|
||||
@echo "📦 安装到系统..."
|
||||
sudo cp $(BUILD_DIR)/$(BINARY_NAME) /usr/local/bin/
|
||||
@echo "✅ 安装完成: /usr/local/bin/$(BINARY_NAME)"
|
||||
|
||||
# 卸载
|
||||
.PHONY: uninstall
|
||||
uninstall:
|
||||
@echo "🗑️ 从系统卸载..."
|
||||
sudo rm -f /usr/local/bin/$(BINARY_NAME)
|
||||
@echo "✅ 卸载完成"
|
||||
|
||||
# Docker 构建
|
||||
.PHONY: docker-build
|
||||
docker-build:
|
||||
@echo "🐳 构建 Docker 镜像..."
|
||||
docker build -t openai-proxy:$(VERSION) .
|
||||
docker tag openai-proxy:$(VERSION) openai-proxy:latest
|
||||
@echo "✅ Docker 镜像构建完成"
|
||||
|
||||
# Docker 运行
|
||||
.PHONY: docker-run
|
||||
docker-run:
|
||||
@echo "🐳 运行 Docker 容器..."
|
||||
docker run -d \
|
||||
--name openai-proxy \
|
||||
-p 3000:3000 \
|
||||
-v $(PWD)/keys.txt:/app/keys.txt:ro \
|
||||
-v $(PWD)/.env:/app/.env:ro \
|
||||
--restart unless-stopped \
|
||||
openai-proxy:latest
|
||||
|
||||
# 健康检查
|
||||
.PHONY: health
|
||||
health:
|
||||
@echo "💚 健康检查..."
|
||||
@curl -s http://localhost:3000/health | jq . || echo "请安装 jq 或检查服务是否运行"
|
||||
|
||||
# 查看统计
|
||||
.PHONY: stats
|
||||
stats:
|
||||
@echo "📊 查看统计信息..."
|
||||
@curl -s http://localhost:3000/stats | jq . || echo "请安装 jq 或检查服务是否运行"
|
||||
|
||||
# 重置密钥
|
||||
.PHONY: reset-keys
|
||||
reset-keys:
|
||||
@echo "🔄 重置密钥状态..."
|
||||
@curl -s http://localhost:3000/reset-keys | jq . || echo "请安装 jq 或检查服务是否运行"
|
||||
|
||||
# 查看黑名单
|
||||
.PHONY: blacklist
|
||||
blacklist:
|
||||
@echo "🚫 查看黑名单..."
|
||||
@curl -s http://localhost:3000/blacklist | jq . || echo "请安装 jq 或检查服务是否运行"
|
||||
|
||||
# 帮助
|
||||
.PHONY: help
|
||||
help:
|
||||
@echo "OpenAI 多密钥代理服务器 v$(VERSION) - 可用命令:"
|
||||
@echo ""
|
||||
@echo "构建相关:"
|
||||
@echo " build - 构建二进制文件"
|
||||
@echo " build-all - 构建所有平台版本"
|
||||
@echo " clean - 清理构建文件"
|
||||
@echo ""
|
||||
@echo "运行相关:"
|
||||
@echo " run - 运行服务器"
|
||||
@echo " dev - 开发模式运行"
|
||||
@echo ""
|
||||
@echo "测试相关:"
|
||||
@echo " test - 运行测试"
|
||||
@echo " coverage - 生成测试覆盖率报告"
|
||||
@echo " bench - 运行基准测试"
|
||||
@echo ""
|
||||
@echo "代码质量:"
|
||||
@echo " lint - 代码检查"
|
||||
@echo " fmt - 格式化代码"
|
||||
@echo " tidy - 整理依赖"
|
||||
@echo ""
|
||||
@echo "安装相关:"
|
||||
@echo " install - 安装到系统"
|
||||
@echo " uninstall - 从系统卸载"
|
||||
@echo ""
|
||||
@echo "Docker 相关:"
|
||||
@echo " docker-build - 构建 Docker 镜像"
|
||||
@echo " docker-run - 运行 Docker 容器"
|
||||
@echo ""
|
||||
@echo "管理相关:"
|
||||
@echo " health - 健康检查"
|
||||
@echo " stats - 查看统计信息"
|
||||
@echo " reset-keys - 重置密钥状态"
|
||||
@echo " blacklist - 查看黑名单"
|
Reference in New Issue
Block a user