基本能力编写完成
This commit is contained in:
114
Makefile
Normal file
114
Makefile
Normal file
@@ -0,0 +1,114 @@
|
||||
.PHONY: build run test clean install help
|
||||
|
||||
# 变量定义
|
||||
APP_NAME=gitcodestatic
|
||||
BUILD_DIR=./bin
|
||||
CMD_DIR=./cmd/server
|
||||
CONFIG_DIR=./configs
|
||||
WORKSPACE_DIR=./workspace
|
||||
|
||||
# 默认目标
|
||||
help:
|
||||
@echo "GitCodeStatic - Makefile Commands"
|
||||
@echo ""
|
||||
@echo "Usage:"
|
||||
@echo " make install - 安装依赖"
|
||||
@echo " make build - 编译项目"
|
||||
@echo " make run - 运行服务"
|
||||
@echo " make test - 运行测试"
|
||||
@echo " make test-cover - 运行测试并生成覆盖率报告"
|
||||
@echo " make clean - 清理构建文件"
|
||||
@echo " make fmt - 格式化代码"
|
||||
@echo " make lint - 代码检查"
|
||||
@echo " make init-dirs - 初始化工作目录"
|
||||
@echo ""
|
||||
|
||||
# 安装依赖
|
||||
install:
|
||||
@echo "Installing dependencies..."
|
||||
go mod download
|
||||
go mod tidy
|
||||
|
||||
# 编译项目
|
||||
build:
|
||||
@echo "Building $(APP_NAME)..."
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
go build -o $(BUILD_DIR)/$(APP_NAME) $(CMD_DIR)/main.go
|
||||
@echo "Build complete: $(BUILD_DIR)/$(APP_NAME)"
|
||||
|
||||
# 运行服务
|
||||
run:
|
||||
@echo "Starting $(APP_NAME)..."
|
||||
go run $(CMD_DIR)/main.go
|
||||
|
||||
# 运行测试
|
||||
test:
|
||||
@echo "Running tests..."
|
||||
go test ./... -v
|
||||
|
||||
# 测试覆盖率
|
||||
test-cover:
|
||||
@echo "Running tests with coverage..."
|
||||
go test ./... -coverprofile=coverage.out
|
||||
go tool cover -html=coverage.out -o coverage.html
|
||||
@echo "Coverage report generated: coverage.html"
|
||||
|
||||
# 清理构建文件
|
||||
clean:
|
||||
@echo "Cleaning..."
|
||||
rm -rf $(BUILD_DIR)
|
||||
rm -rf $(WORKSPACE_DIR)
|
||||
rm -f coverage.out coverage.html
|
||||
@echo "Clean complete"
|
||||
|
||||
# 格式化代码
|
||||
fmt:
|
||||
@echo "Formatting code..."
|
||||
go fmt ./...
|
||||
@echo "Format complete"
|
||||
|
||||
# 代码检查(需要安装golangci-lint)
|
||||
lint:
|
||||
@echo "Linting code..."
|
||||
@if command -v golangci-lint > /dev/null; then \
|
||||
golangci-lint run; \
|
||||
else \
|
||||
echo "golangci-lint not installed. Run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest"; \
|
||||
fi
|
||||
|
||||
# 初始化工作目录
|
||||
init-dirs:
|
||||
@echo "Initializing workspace directories..."
|
||||
@mkdir -p $(WORKSPACE_DIR)/cache
|
||||
@mkdir -p $(WORKSPACE_DIR)/stats
|
||||
@echo "Directories created"
|
||||
|
||||
# 开发模式(热重载,需要安装air)
|
||||
dev:
|
||||
@echo "Starting development mode..."
|
||||
@if command -v air > /dev/null; then \
|
||||
air; \
|
||||
else \
|
||||
echo "air not installed. Run: go install github.com/cosmtrek/air@latest"; \
|
||||
echo "Falling back to normal run..."; \
|
||||
make run; \
|
||||
fi
|
||||
|
||||
# Docker相关(可选)
|
||||
docker-build:
|
||||
@echo "Building Docker image..."
|
||||
docker build -t $(APP_NAME):latest .
|
||||
|
||||
docker-run:
|
||||
@echo "Running Docker container..."
|
||||
docker run -p 8080:8080 -v $(PWD)/workspace:/app/workspace $(APP_NAME):latest
|
||||
|
||||
# 生产构建(优化)
|
||||
build-prod:
|
||||
@echo "Building for production..."
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
|
||||
-ldflags="-w -s" \
|
||||
-o $(BUILD_DIR)/$(APP_NAME) \
|
||||
$(CMD_DIR)/main.go
|
||||
@echo "Production build complete: $(BUILD_DIR)/$(APP_NAME)"
|
||||
Reference in New Issue
Block a user