-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
253 lines (215 loc) · 6.38 KB
/
Makefile
File metadata and controls
253 lines (215 loc) · 6.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
# RunPanel Makefile
# 变量定义
BINARY_NAME=paneld
BINARY_PATH=./bin/$(BINARY_NAME)
CMD_PATH=./cmd/paneld
DOCS_PATH=./docs
SWAGGER_PATH=./web/RunPanel-Web/SwaggerAPIDoc
TEST_CONFIG=./test/config_test.yaml
# Go相关变量
GOCMD=go
GOBUILD=$(GOCMD) build
GOCLEAN=$(GOCMD) clean
GOTEST=$(GOCMD) test
GOGET=$(GOCMD) get
GOMOD=$(GOCMD) mod
# 默认目标
.PHONY: all
all: clean deps swagger build
# 安装依赖
.PHONY: deps
deps:
$(GOMOD) download
$(GOMOD) tidy
# 构建二进制文件
.PHONY: build
build:
$(eval VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev"))
$(eval BUILD_TIME := $(shell date '+%Y-%m-%d %H:%M:%S'))
$(eval GIT_COMMIT := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown"))
$(eval LDFLAGS := -s -w -X 'github.com/Run-Panel/RunPanel/internal/version.Version=$(VERSION)' -X 'github.com/Run-Panel/RunPanel/internal/version.BuildTime=$(BUILD_TIME)' -X 'github.com/Run-Panel/RunPanel/internal/version.GitCommit=$(GIT_COMMIT)')
$(GOBUILD) -ldflags "$(LDFLAGS)" -o $(BINARY_PATH) $(CMD_PATH)
# 开发模式运行
.PHONY: dev
dev:
$(GOCMD) run $(CMD_PATH)/main.go -config ./configs/config.yaml
# 生成swagger文档
.PHONY: swagger
swagger:
@echo "生成Swagger文档..."
swag init -g $(CMD_PATH)/main.go -o $(DOCS_PATH)
@echo "复制Swagger文档到前端目录..."
cp -r $(DOCS_PATH)/* $(SWAGGER_PATH)/
@echo "Swagger文档生成完成"
# 清理生成的文件
.PHONY: clean
clean:
$(GOCLEAN)
rm -f $(BINARY_PATH)
rm -rf $(DOCS_PATH)/*.go $(DOCS_PATH)/*.json $(DOCS_PATH)/*.yaml
# 测试相关目标
# 运行所有测试
.PHONY: test
test:
@echo "运行所有测试..."
$(GOTEST) -v ./test/...
# 运行特定测试套件
.PHONY: test-auth
test-auth:
@echo "运行认证测试..."
$(GOTEST) -v ./test/ -run TestRunAuthTestSuite
.PHONY: test-workspace
test-workspace:
@echo "运行工作区测试..."
$(GOTEST) -v ./test/ -run TestRunWorkspaceTestSuite
.PHONY: test-lxc
test-lxc:
@echo "运行LXC测试..."
$(GOTEST) -v ./test/ -run TestRunLXCTestSuite
.PHONY: test-admin
test-admin:
@echo "运行管理员测试..."
$(GOTEST) -v ./test/ -run TestRunAdminTestSuite
# 运行测试并生成覆盖率报告
.PHONY: test-coverage
test-coverage:
@echo "运行测试并生成覆盖率报告..."
$(GOTEST) -v -coverprofile=coverage.out ./test/...
$(GOCMD) tool cover -html=coverage.out -o coverage.html
@echo "覆盖率报告已生成: coverage.html"
# 运行测试(详细输出)
.PHONY: test-verbose
test-verbose:
@echo "运行详细测试..."
$(GOTEST) -v -count=1 ./test/... -args -test.timeout=30m
# 运行短测试(跳过耗时测试)
.PHONY: test-short
test-short:
@echo "运行短测试..."
$(GOTEST) -v -short ./test/...
# 并行运行测试
.PHONY: test-parallel
test-parallel:
@echo "并行运行测试..."
$(GOTEST) -v -parallel=4 ./test/...
# 基准测试
.PHONY: benchmark
benchmark:
@echo "运行基准测试..."
$(GOTEST) -bench=. -benchmem ./test/...
# 代码质量检查
# 格式化代码
.PHONY: fmt
fmt:
$(GOCMD) fmt ./...
# 代码检查
.PHONY: lint
lint:
golangci-lint run
# 兽医检查
.PHONY: vet
vet:
$(GOCMD) vet ./...
# 安全检查
.PHONY: security
security:
gosec ./...
# 数据库相关
# 运行数据库迁移
.PHONY: migrate-up
migrate-up:
@echo "运行数据库迁移..."
./scripts/migrate.sh up
# 回滚数据库迁移
.PHONY: migrate-down
migrate-down:
@echo "回滚数据库迁移..."
./scripts/migrate.sh down
# 重置数据库
.PHONY: migrate-reset
migrate-reset:
@echo "重置数据库..."
./scripts/migrate.sh reset
# Docker相关
# 构建Docker镜像
.PHONY: docker-build
docker-build:
docker build -t runpanel:latest .
# 运行Docker容器
.PHONY: docker-run
docker-run:
docker run -p 8081:8081 -v $(PWD)/data:/app/data runpanel:latest
# 开发环境设置
# 初始化开发环境
.PHONY: init-dev
init-dev: deps swagger migrate-up
@echo "开发环境初始化完成"
# 重置开发环境
.PHONY: reset-dev
reset-dev: clean migrate-reset migrate-up
@echo "开发环境已重置"
# 完整的CI流程
.PHONY: ci
ci: deps fmt vet lint test-coverage swagger build
@echo "CI流程完成"
# 快速检查(提交前运行)
.PHONY: pre-commit
pre-commit: fmt vet test-short swagger
@echo "提交前检查完成"
# 生产构建
.PHONY: build-prod
build-prod:
$(eval VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev"))
$(eval BUILD_TIME := $(shell date '+%Y-%m-%d %H:%M:%S'))
$(eval GIT_COMMIT := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown"))
$(eval LDFLAGS := -s -w -extldflags "-static" -X 'github.com/Run-Panel/RunPanel/internal/version.Version=$(VERSION)' -X 'github.com/Run-Panel/RunPanel/internal/version.BuildTime=$(BUILD_TIME)' -X 'github.com/Run-Panel/RunPanel/internal/version.GitCommit=$(GIT_COMMIT)')
CGO_ENABLED=0 GOOS=linux $(GOBUILD) -a -installsuffix cgo -ldflags "$(LDFLAGS)" -o $(BINARY_PATH) $(CMD_PATH)
# 帮助信息
.PHONY: help
help:
@echo "RunPanel Makefile 命令:"
@echo ""
@echo "构建相关:"
@echo " build 构建二进制文件"
@echo " build-prod 生产环境构建"
@echo " clean 清理生成的文件"
@echo " deps 安装依赖"
@echo ""
@echo "开发相关:"
@echo " dev 开发模式运行"
@echo " swagger 生成Swagger文档"
@echo " init-dev 初始化开发环境"
@echo " reset-dev 重置开发环境"
@echo ""
@echo "测试相关:"
@echo " test 运行所有测试"
@echo " test-auth 运行认证测试"
@echo " test-workspace 运行工作区测试"
@echo " test-lxc 运行LXC测试"
@echo " test-admin 运行管理员测试"
@echo " test-coverage 生成测试覆盖率报告"
@echo " test-verbose 运行详细测试"
@echo " test-short 运行短测试"
@echo " test-parallel 并行运行测试"
@echo " benchmark 运行基准测试"
@echo ""
@echo "代码质量:"
@echo " fmt 格式化代码"
@echo " lint 代码检查"
@echo " vet 兽医检查"
@echo " security 安全检查"
@echo ""
@echo "数据库:"
@echo " migrate-up 运行数据库迁移"
@echo " migrate-down 回滚数据库迁移"
@echo " migrate-reset 重置数据库"
@echo ""
@echo "Docker:"
@echo " docker-build 构建Docker镜像"
@echo " docker-run 运行Docker容器"
@echo ""
@echo "CI/CD:"
@echo " ci 完整的CI流程"
@echo " pre-commit 提交前检查"
@echo ""
@echo " help 显示此帮助信息"