Files
OpenClaw Agent b973bdaf47 refactor: 目录结构重构和清理 (v2.0.2)
新增目录:
- docs/legacy/ - 废弃文档归档
- scripts/ - 管理脚本和测试脚本
- build/ - 构建输出目录

文件移动:
- GO_REFACTOR_PROGRESS.md -> docs/legacy/
- OPTIMIZATION_REPORT.md -> docs/legacy/
- sms-receiver-go-ctl.sh -> scripts/
- test_api.sh -> scripts/

改进:
- 更新 .gitignore 忽略运行时文件
- 新增 CHANGELOG.md 独立变更日志
- 更新 README.md 目录结构说明
- 更新 Makefile 版本号到 v2.0.2
- 更新管理脚本路径引用

清理:
- 从仓库中移除二进制文件
- 从仓库中移除数据库文件
- 从仓库中移除日志文件
- 从仓库中移除配置文件
2026-02-12 12:19:05 +08:00

169 lines
4.7 KiB
Makefile

.PHONY: all build clean run test docker-build docker-run install-dev help release
# 应用名称
APP_NAME := sms-receiver-v2
MAIN_FILE := main.go
# 版本信息
VERSION := v2.0.2
BUILD_TIME := $(shell date +%Y-%m-%d\ %H:%M:%S)
GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
GO_VERSION := $(shell go version | awk '{print $$3}')
BUILD_ENV := prod
# Go 配置
GO := go
GOFMT := gofmt
GOVET := go vet
GOTEST := go test
# 构建配置
BUILD_DIR := ./build
LDFLAGS := -ldflags="-X 'main.Version=$(VERSION)' -X 'main.BuildTime=$(BUILD_TIME)' -X 'main.GitCommit=$(GIT_COMMIT)' -X 'main.GoVersion=$(GO_VERSION)' -X 'main.BuildEnv=$(BUILD_ENV)' -w -s"
# Docker 配置
DOCKER_IMAGE := sms-receiver-go
DOCKER_TAG := latest
# 默认目标
all: build
## build: 编译应用
build:
@echo "编译应用..."
$(GO) build $(LDFLAGS) -o $(APP_NAME) $(MAIN_FILE)
@echo "编译完成: $(APP_NAME)"
## clean: 清理构建文件
clean:
@echo "清理构建文件..."
rm -f $(APP_NAME)
rm -rf $(BUILD_DIR)
@echo "清理完成"
## run: 运行应用
run:
@echo "运行应用..."
$(GO) run $(MAIN_FILE)
## test: 运行测试
test:
@echo "运行测试..."
$(GOTEST) -v ./...
## fmt: 格式化代码
fmt:
@echo "格式化代码..."
$(GOFMT) -s -w .
## vet: 代码质量检查
vet:
@echo "代码质量检查..."
$(GOVET) ./...
## install-dev: 安装开发依赖
install-dev:
@echo "安装开发依赖..."
$(GO) install -v github.com/golangci/golangci-lint/cmd/golangci-lint@latest
## lint: 代码检查
lint:
@echo "代码检查..."
golangci-lint run
## docker-build: 构建 Docker 镜像
docker-build:
@echo "构建 Docker 镜像..."
docker build -t $(DOCKER_IMAGE):$(DOCKER_TAG) .
## docker-run: 运行 Docker 容器
docker-run:
@echo "运行 Docker 容器..."
docker run -d \
--name $(DOCKER_IMAGE) \
-p 28001:28001 \
-v $(PWD)/config.yaml:/app/config.yaml:ro \
-v $(PWD)/data:/app/data \
--restart unless-stopped \
$(DOCKER_IMAGE):$(DOCKER_TAG)
## docker-stop: 停止 Docker 容器
docker-stop:
@echo "停止 Docker 容器..."
docker stop $(DOCKER_IMAGE) || true
docker rm $(DOCKER_IMAGE) || true
## docker-logs: 查看 Docker 日志
docker-logs:
docker logs -f $(DOCKER_IMAGE)
## password: 生成密码哈希
password:
@echo "生成密码哈希..."
@read -p "请输入密码: " password; \
$(GO) run tools/password_hash.go $$password
## help: 显示帮助信息
help:
@echo "可用命令:"
@grep -E '^## ' $(MAKEFILE_LIST) | sed 's/## / /'
## 初始化项目
init:
@echo "初始化项目..."
@if [ ! -f config.yaml ]; then \
cp config.example.yaml config.yaml; \
echo "已创建 config.yaml,请根据需要修改配置"; \
else \
echo "config.yaml 已存在"; \
fi
## release: 发布版本(创建 tag、推送到远程、上传二进制文件)
release: clean build
@echo "正在发布版本: $(VERSION)"
@if [ -z "$(VERSION)" ]; then \
echo "错误: 请指定 VERSION,例如: make release VERSION=v2.0.0"; \
exit 1; \
fi
@git tag -a $(VERSION) -m "Release $(VERSION)" || echo "Tag 已存在,继续..."
@git push origin $(VERSION) || echo "Tag 已推送"
@echo "请在 Gitea 上手动上传二进制文件到 Release: $(VERSION)"
@echo "或者使用: make release-upload VERSION=$(VERSION)"
## release-upload: 上传二进制文件到 Gitea Release
release-upload:
@echo "上传二进制文件到 Gitea Release: $(VERSION)"
@if [ ! -f $(APP_NAME) ]; then \
echo "错误: 找不到编译文件 $(APP_NAME),请先运行 make build"; \
exit 1; \
fi
@if [ -z "$(GITEA_TOKEN)" ]; then \
echo "错误: 请设置环境变量 GITEA_TOKEN"; \
echo "用法: make release-upload VERSION=v2.0.0 GITEA_TOKEN=your_token"; \
exit 1; \
fi
@echo "正在上传 $(APP_NAME) 到 Gitea..."
@curl -X POST \
-H "Authorization: token $(GITEA_TOKEN)" \
-F "attachment=@$(APP_NAME)" \
"https://gitea.king.nyc.mn/api/v1/repos/openclaw/SmsReceiver-go/releases/$(VERSION)/assets" \
2>&1 | grep -E "(name|size|browser_download_url)" || echo "上传完成"
@echo "✅ 上传完成!"
## release-full: 完整发布流程(编译、tag、推送、上传)
release-full: clean build
@echo "完整发布流程: $(VERSION)"
@if [ -z "$(VERSION)" ] || [ -z "$(GITEA_TOKEN)" ]; then \
echo "用法: make release-full VERSION=v2.0.0 GITEA_TOKEN=your_token"; \
exit 1; \
fi
@echo "1. 创建并推送 Git tag..."
@git tag -a $(VERSION) -m "Release $(VERSION)"
@git push origin $(VERSION)
@echo "2. 上传二进制文件到 Gitea Release..."
@curl -X POST \
-H "Authorization: token $(GITEA_TOKEN)" \
-F "attachment=@$(APP_NAME)" \
"https://gitea.king.nyc.mn/api/v1/repos/openclaw/SmsReceiver-go/releases/$(VERSION)/assets"
@echo "✅ 发布完成!访问: https://gitea.king.nyc.mn/openclaw/SmsReceiver-go/releases/tag/$(VERSION)"