-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathMakefile
More file actions
160 lines (137 loc) · 4.14 KB
/
Makefile
File metadata and controls
160 lines (137 loc) · 4.14 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
# MediaProxy Makefile
# 提供简洁的构建命令
.PHONY: all build clean help install dev test fmt vet deps
# 项目信息
APP_NAME := mediaProxy
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
BUILD_TIME := $(shell date -u '+%Y-%m-%d_%H:%M:%S_UTC')
GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
# 构建目录
BUILD_DIR := build
DIST_DIR := dist
# Go构建参数
LDFLAGS := -s -w -X main.Version=$(VERSION) -X main.BuildTime=$(BUILD_TIME) -X main.GitCommit=$(GIT_COMMIT)
BUILD_FLAGS := -ldflags="$(LDFLAGS)" -trimpath
# 默认目标
all: clean deps build
# 构建当前平台
build:
@echo "构建 $(APP_NAME) v$(VERSION)..."
@mkdir -p $(BUILD_DIR)
CGO_ENABLED=0 go build $(BUILD_FLAGS) -o $(BUILD_DIR)/$(APP_NAME) .
@echo "构建完成: $(BUILD_DIR)/$(APP_NAME)"
# 构建所有平台
build-all: clean deps
@echo "构建所有平台..."
@chmod +x build.sh
@./build.sh --all
# 构建指定平台
# 用法: make build-platform PLATFORM=linux/amd64
build-platform: clean deps
@echo "构建平台: $(PLATFORM)"
@chmod +x build.sh
@./build.sh --platform $(PLATFORM)
# 开发模式构建(快速构建,不优化)
dev:
@echo "开发模式构建..."
@mkdir -p $(BUILD_DIR)
go build -o $(BUILD_DIR)/$(APP_NAME) .
@echo "开发构建完成: $(BUILD_DIR)/$(APP_NAME)"
# 运行程序
run: dev
@echo "启动 $(APP_NAME)..."
@$(BUILD_DIR)/$(APP_NAME)
# 运行程序(调试模式)
run-debug: dev
@echo "启动 $(APP_NAME) (调试模式)..."
@$(BUILD_DIR)/$(APP_NAME) -debug
# 安装到系统
install: build
@echo "安装 $(APP_NAME) 到系统..."
@sudo cp $(BUILD_DIR)/$(APP_NAME) /usr/local/bin/
@echo "安装完成"
# 清理构建文件
clean:
@echo "清理构建文件..."
@rm -rf $(BUILD_DIR) $(DIST_DIR)
@echo "清理完成"
# 下载依赖
deps:
@echo "下载依赖..."
@go mod tidy
@go mod download
# 运行测试
test:
@echo "运行测试..."
@go test -v ./...
# 代码格式化
fmt:
@echo "格式化代码..."
@go fmt ./...
# 代码检查
vet:
@echo "代码检查..."
@go vet ./...
# 代码质量检查(需要安装golangci-lint)
lint:
@echo "代码质量检查..."
@golangci-lint run
# 生成版本信息
version:
@echo "应用名称: $(APP_NAME)"
@echo "版本: $(VERSION)"
@echo "构建时间: $(BUILD_TIME)"
@echo "Git提交: $(GIT_COMMIT)"
# Docker构建
docker-build:
@echo "构建Docker镜像..."
@docker build -t $(APP_NAME):$(VERSION) .
@docker tag $(APP_NAME):$(VERSION) $(APP_NAME):latest
@echo "Docker镜像构建完成"
# 创建发布
release: clean deps build-all
@echo "创建发布包..."
@echo "发布包位置: $(DIST_DIR)/"
@ls -la $(DIST_DIR)/
# 快速开始(首次使用)
quickstart: deps build
@echo ""
@echo "=========================================="
@echo "MediaProxy 快速开始"
@echo "=========================================="
@echo "1. 启动服务: make run"
@echo "2. 调试模式: make run-debug"
@echo "3. 测试请求:"
@echo " curl \"http://localhost:57574/?url=https://httpbin.org/json\""
@echo ""
@echo "更多命令: make help"
@echo "=========================================="
# 显示帮助
help:
@echo "MediaProxy 构建系统"
@echo ""
@echo "常用命令:"
@echo " make build 构建当前平台"
@echo " make build-all 构建所有平台"
@echo " make dev 开发模式构建"
@echo " make run 运行程序"
@echo " make run-debug 调试模式运行"
@echo " make clean 清理构建文件"
@echo " make test 运行测试"
@echo " make quickstart 快速开始"
@echo ""
@echo "高级命令:"
@echo " make build-platform PLATFORM=linux/amd64 构建指定平台"
@echo " make install 安装到系统"
@echo " make release 创建发布包"
@echo " make docker-build 构建Docker镜像"
@echo ""
@echo "代码质量:"
@echo " make fmt 格式化代码"
@echo " make vet 代码检查"
@echo " make lint 代码质量检查"
@echo ""
@echo "其他:"
@echo " make deps 下载依赖"
@echo " make version 显示版本信息"
@echo " make help 显示此帮助"