Files
WeKnora/Makefile

216 lines
6.0 KiB
Makefile
Raw Permalink Normal View History

.PHONY: help build run test clean docker-build-app docker-build-docreader docker-build-frontend docker-build-all docker-run migrate-up migrate-down docker-restart docker-stop start-all stop-all start-ollama stop-ollama build-images build-images-app build-images-docreader build-images-frontend clean-images check-env list-containers pull-images show-platform
# Show help
help:
@echo "WeKnora Makefile 帮助"
@echo ""
@echo "基础命令:"
@echo " build 构建应用"
@echo " run 运行应用"
@echo " test 运行测试"
@echo " clean 清理构建文件"
@echo ""
@echo "Docker 命令:"
2025-09-10 15:06:24 +08:00
@echo " docker-build-app 构建应用 Docker 镜像 (wechatopenai/weknora-app)"
@echo " docker-build-docreader 构建文档读取器镜像 (wechatopenai/weknora-docreader)"
@echo " docker-build-frontend 构建前端镜像 (wechatopenai/weknora-ui)"
@echo " docker-build-all 构建所有 Docker 镜像"
@echo " docker-run 运行 Docker 容器"
@echo " docker-stop 停止 Docker 容器"
@echo " docker-restart 重启 Docker 容器"
@echo ""
@echo "服务管理:"
@echo " start-all 启动所有服务"
@echo " stop-all 停止所有服务"
@echo " start-ollama 仅启动 Ollama 服务"
@echo ""
@echo "镜像构建:"
@echo " build-images 从源码构建所有镜像"
@echo " build-images-app 从源码构建应用镜像"
@echo " build-images-docreader 从源码构建文档读取器镜像"
@echo " build-images-frontend 从源码构建前端镜像"
@echo " clean-images 清理本地镜像"
@echo ""
@echo "数据库:"
@echo " migrate-up 执行数据库迁移"
@echo " migrate-down 回滚数据库迁移"
@echo ""
@echo "开发工具:"
@echo " fmt 格式化代码"
@echo " lint 代码检查"
@echo " deps 安装依赖"
@echo " docs 生成 API 文档"
2025-09-10 15:06:24 +08:00
@echo ""
@echo "环境检查:"
@echo " check-env 检查环境配置"
@echo " list-containers 列出运行中的容器"
@echo " pull-images 拉取最新镜像"
@echo " show-platform 显示当前构建平台"
2025-08-05 15:08:07 +08:00
# Go related variables
BINARY_NAME=WeKnora
MAIN_PATH=./cmd/server
# Docker related variables
2025-09-10 15:06:24 +08:00
DOCKER_IMAGE=wechatopenai/weknora-app
2025-08-05 15:08:07 +08:00
DOCKER_TAG=latest
# Platform detection
ifeq ($(shell uname -m),x86_64)
PLATFORM=linux/amd64
else ifeq ($(shell uname -m),aarch64)
PLATFORM=linux/arm64
else ifeq ($(shell uname -m),arm64)
PLATFORM=linux/arm64
else
PLATFORM=linux/amd64
endif
2025-08-05 15:08:07 +08:00
# Build the application
build:
go build -o $(BINARY_NAME) $(MAIN_PATH)
# Run the application
run: build
./$(BINARY_NAME)
# Run tests
test:
go test -v ./...
# Clean build artifacts
clean:
go clean
rm -f $(BINARY_NAME)
# Build Docker image
2025-09-10 15:06:24 +08:00
docker-build-app:
@echo "获取版本信息..."
@eval $$(./scripts/get_version.sh env); \
./scripts/get_version.sh info; \
docker build --platform $(PLATFORM) \
--build-arg VERSION_ARG="$$VERSION" \
--build-arg COMMIT_ID_ARG="$$COMMIT_ID" \
--build-arg BUILD_TIME_ARG="$$BUILD_TIME" \
--build-arg GO_VERSION_ARG="$$GO_VERSION" \
-f docker/Dockerfile.app -t $(DOCKER_IMAGE):$(DOCKER_TAG) .
2025-09-10 15:06:24 +08:00
# Build docreader Docker image
docker-build-docreader:
docker build --platform $(PLATFORM) -f docker/Dockerfile.docreader -t wechatopenai/weknora-docreader:latest .
2025-09-10 15:06:24 +08:00
# Build frontend Docker image
docker-build-frontend:
docker build --platform $(PLATFORM) -f frontend/Dockerfile -t wechatopenai/weknora-ui:latest frontend/
2025-09-10 15:06:24 +08:00
# Build all Docker images
docker-build-all: docker-build-app docker-build-docreader docker-build-frontend
2025-08-05 15:08:07 +08:00
# Run Docker container (传统方式)
docker-run:
docker-compose up
# 使用新脚本启动所有服务
start-all:
./scripts/start_all.sh
# 使用新脚本仅启动Ollama服务
start-ollama:
./scripts/start_all.sh --ollama
# 使用新脚本仅启动Docker容器
start-docker:
./scripts/start_all.sh --docker
# 使用新脚本停止所有服务
stop-all:
./scripts/start_all.sh --stop
# Stop Docker container (传统方式)
docker-stop:
docker-compose down
# 从源码构建镜像相关命令
build-images:
./scripts/build_images.sh
build-images-app:
./scripts/build_images.sh --app
build-images-docreader:
./scripts/build_images.sh --docreader
build-images-frontend:
./scripts/build_images.sh --frontend
clean-images:
./scripts/build_images.sh --clean
2025-09-10 15:06:24 +08:00
# Restart Docker container (stop, start)
2025-08-05 15:08:07 +08:00
docker-restart:
docker-compose stop -t 60
2025-09-10 15:06:24 +08:00
docker-compose up
2025-08-05 15:08:07 +08:00
# Database migrations
migrate-up:
./scripts/migrate.sh up
migrate-down:
./scripts/migrate.sh down
# Generate API documentation
docs:
swag init -g $(MAIN_PATH)/main.go -o ./docs
# Format code
fmt:
go fmt ./...
# Lint code
lint:
golangci-lint run
# Install dependencies
deps:
go mod download
# Build for production
build-prod:
2025-09-17 20:11:27 +08:00
VERSION=$${VERSION:-unknown}; \
COMMIT_ID=$${COMMIT_ID:-unknown}; \
BUILD_TIME=$${BUILD_TIME:-unknown}; \
GO_VERSION=$${GO_VERSION:-unknown}; \
LDFLAGS="-X 'github.com/Tencent/WeKnora/internal/handler.Version=$$VERSION' -X 'github.com/Tencent/WeKnora/internal/handler.CommitID=$$COMMIT_ID' -X 'github.com/Tencent/WeKnora/internal/handler.BuildTime=$$BUILD_TIME' -X 'github.com/Tencent/WeKnora/internal/handler.GoVersion=$$GO_VERSION'"; \
go build -ldflags="-w -s $$LDFLAGS" -o $(BINARY_NAME) $(MAIN_PATH)
2025-08-05 15:08:07 +08:00
clean-db:
@echo "Cleaning database..."
@if [ $$(docker volume ls -q -f name=weknora_postgres-data) ]; then \
docker volume rm weknora_postgres-data; \
fi
2025-08-13 21:56:20 +08:00
@if [ $$(docker volume ls -q -f name=weknora_minio_data) ]; then \
docker volume rm weknora_minio_data; \
fi
@if [ $$(docker volume ls -q -f name=weknora_redis_data) ]; then \
docker volume rm weknora_redis_data; \
fi
2025-08-05 15:08:07 +08:00
2025-09-10 15:06:24 +08:00
# Environment check
check-env:
./scripts/start_all.sh --check
# List containers
list-containers:
./scripts/start_all.sh --list
# Pull latest images
pull-images:
./scripts/start_all.sh --pull
# Show current platform
show-platform:
@echo "当前系统架构: $(shell uname -m)"
@echo "Docker构建平台: $(PLATFORM)"
2025-08-05 15:08:07 +08:00