🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
226 lines
6.5 KiB
Makefile
226 lines
6.5 KiB
Makefile
# 康养机器人项目Makefile
|
|
|
|
.PHONY: help setup clean test run-dev run-prod build deploy monitor
|
|
|
|
PYTHON := python3
|
|
DOCKER := docker
|
|
KUBECTL := kubectl
|
|
ENV ?= dev
|
|
|
|
# 默认目标
|
|
help:
|
|
@echo "康养机器人项目 Makefile 命令:"
|
|
@echo ""
|
|
@echo " setup - 初始化项目环境"
|
|
@echo " run-dev - 启动开发环境"
|
|
@echo " run-tests - 运行所有测试"
|
|
@echo " test-unit - 运行单元测试"
|
|
@echo " test-integration - 运行集成测试"
|
|
@echo " test-e2e - 运行端到端测试"
|
|
@echo " test-performance - 运行性能测试"
|
|
@echo " lint - 运行代码检查"
|
|
@echo " format - 格式化代码"
|
|
@echo " build - 构建Docker镜像"
|
|
@echo " deploy - 部署到Kubernetes"
|
|
@echo " monitor - 启动监控面板"
|
|
@echo " clean - 清理临时文件"
|
|
@echo " docs - 生成文档"
|
|
|
|
# 环境设置
|
|
setup:
|
|
@echo "初始化项目环境..."
|
|
@chmod +x scripts/setup.sh
|
|
@./scripts/setup.sh $(ENV)
|
|
|
|
# 开发环境
|
|
run-dev:
|
|
@echo "启动开发环境..."
|
|
@docker-compose -f infrastructure/docker/docker-compose.dev.yml up -d
|
|
@echo "等待服务启动..."
|
|
@sleep 10
|
|
@echo ""
|
|
@echo "服务已启动:"
|
|
@echo " - 健康监测服务: http://localhost:8001"
|
|
@echo " - 陪伴服务: http://localhost:8002"
|
|
@echo " - 康复训练服务: http://localhost:8003"
|
|
@echo " - API网关: http://localhost:8000"
|
|
@echo " - Web管理端: http://localhost:3000"
|
|
@echo " - Prometheus: http://localhost:9090"
|
|
@echo " - Grafana: http://localhost:3001"
|
|
|
|
# 测试相关
|
|
run-tests: test-unit test-integration
|
|
|
|
test-unit:
|
|
@echo "运行单元测试..."
|
|
@$(PYTHON) -m pytest tests/unit -v --cov=services --cov-report=html --cov-report=term
|
|
|
|
test-integration:
|
|
@echo "运行集成测试..."
|
|
@docker-compose -f infrastructure/docker/docker-compose.test.yml up -d
|
|
@$(PYTHON) -m pytest tests/integration -v
|
|
@docker-compose -f infrastructure/docker/docker-compose.test.yml down
|
|
|
|
test-e2e:
|
|
@echo "运行端到端测试..."
|
|
@npm run test:e2e --prefix frontend/web-admin
|
|
|
|
test-performance:
|
|
@echo "运行性能测试..."
|
|
@locust -f tests/performance/locustfile.py --headless -u 100 -r 10 --run-time 60s --host http://localhost:8000
|
|
|
|
test-ai-models:
|
|
@echo "测试AI模型..."
|
|
@$(PYTHON) tests/models/test_all_models.py
|
|
|
|
# 代码质量
|
|
lint:
|
|
@echo "运行代码检查..."
|
|
@$(PYTHON) -m flake8 services/
|
|
@$(PYTHON) -m mypy services/
|
|
@$(PYTHON) -m bandit -r services/
|
|
@npm run lint --prefix frontend/web-admin
|
|
|
|
format:
|
|
@echo "格式化代码..."
|
|
@$(PYTHON) -m black services/
|
|
@$(PYTHON) -m isort services/
|
|
@npm run format --prefix frontend/web-admin
|
|
|
|
security-scan:
|
|
@echo "运行安全扫描..."
|
|
@$(PYTHON) -m safety check
|
|
@trivy image --severity HIGH,CRITICAL registry.example.com/health-monitoring:latest
|
|
|
|
# 构建相关
|
|
build:
|
|
@echo "构建Docker镜像..."
|
|
@$(DOCKER) build -t kangyang/health-monitoring:$(VERSION) services/health-monitoring
|
|
@$(DOCKER) build -t kangyang/companion-service:$(VERSION) services/companion-service
|
|
@$(DOCKER) build -t kangyang/rehabilitation-service:$(VERSION) services/rehabilitation-service
|
|
@echo "构建完成!"
|
|
|
|
build-frontend:
|
|
@echo "构建前端应用..."
|
|
@npm run build --prefix frontend/web-admin
|
|
@cd frontend/mobile-app && flutter build apk
|
|
|
|
push:
|
|
@echo "推送Docker镜像..."
|
|
@$(DOCKER) push kangyang/health-monitoring:$(VERSION)
|
|
@$(DOCKER) push kangyang/companion-service:$(VERSION)
|
|
@$(DOCKER) push kangyang/rehabilitation-service:$(VERSION)
|
|
|
|
# 部署相关
|
|
deploy-staging:
|
|
@echo "部署到测试环境..."
|
|
@$(KUBECTL) apply -f infrastructure/k8s/staging/ -n kangyang-robot-staging
|
|
@$(KUBECTL) rollout status deployment --timeout=300s -n kangyang-robot-staging
|
|
|
|
deploy-production:
|
|
@echo "部署到生产环境..."
|
|
@echo "⚠️ 警告: 即将部署到生产环境,请确认 (yes/no):"
|
|
@read confirm && [ "$$confirm" = "yes" ] || exit 1
|
|
@$(KUBECTL) apply -f infrastructure/k8s/production/ -n kangyang-robot
|
|
@$(KUBECTL) rollout status deployment --timeout=600s -n kangyang-robot
|
|
|
|
rollback:
|
|
@echo "回滚部署..."
|
|
@$(KUBECTL) rollout undo deployment/health-monitoring -n kangyang-robot
|
|
@$(KUBECTL) rollout undo deployment/companion-service -n kangyang-robot
|
|
@$(KUBECTL) rollout undo deployment/rehabilitation-service -n kangyang-robot
|
|
|
|
# 监控相关
|
|
monitor:
|
|
@echo "启动监控面板..."
|
|
@open http://localhost:3001
|
|
@open http://localhost:9090
|
|
|
|
logs:
|
|
@echo "查看服务日志..."
|
|
@$(KUBECTL) logs -f deployment/health-monitoring -n kangyang-robot
|
|
|
|
metrics:
|
|
@echo "查看服务指标..."
|
|
@curl -s http://localhost:8001/metrics | grep -E "^kangyang_"
|
|
|
|
# 数据库相关
|
|
db-migrate:
|
|
@echo "运行数据库迁移..."
|
|
@$(PYTHON) scripts/migrate_database.py
|
|
|
|
db-seed:
|
|
@echo "导入测试数据..."
|
|
@$(PYTHON) scripts/seed_database.py
|
|
|
|
db-backup:
|
|
@echo "备份数据库..."
|
|
@$(DOCKER) exec mysql mysqldump -u root -p kangyang > backup/kangyang_$(shell date +%Y%m%d_%H%M%S).sql
|
|
|
|
# 文档相关
|
|
docs:
|
|
@echo "生成API文档..."
|
|
@$(PYTHON) scripts/generate_api_docs.py
|
|
@echo "生成架构图..."
|
|
@$(PYTHON) scripts/generate_architecture_diagrams.py
|
|
@echo "文档已生成到 docs/api/ 目录"
|
|
|
|
# 清理
|
|
clean:
|
|
@echo "清理临时文件..."
|
|
@find . -type f -name '*.pyc' -delete
|
|
@find . -type d -name '__pycache__' -delete
|
|
@find . -type d -name '.pytest_cache' -delete
|
|
@rm -rf htmlcov/
|
|
@rm -rf .coverage
|
|
@rm -rf node_modules/
|
|
@rm -rf dist/
|
|
@echo "清理完成!"
|
|
|
|
# CI/CD相关
|
|
ci-pipeline:
|
|
@echo "运行CI流水线..."
|
|
@make lint
|
|
@make test-unit
|
|
@make security-scan
|
|
@make build
|
|
|
|
cd-pipeline:
|
|
@echo "运行CD流水线..."
|
|
@make build
|
|
@make push
|
|
@make deploy-$(ENV)
|
|
|
|
# 开发工具
|
|
dev-shell:
|
|
@echo "进入开发Shell..."
|
|
@$(DOCKER) exec -it kangyang-dev-env /bin/bash
|
|
|
|
port-forward:
|
|
@echo "端口转发..."
|
|
@$(KUBECTL) port-forward service/health-monitoring-service 8001:80 -n kangyang-robot &
|
|
@$(KUBECTL) port-forward service/companion-service 8002:80 -n kangyang-robot &
|
|
@$(KUBECTL) port-forward service/rehabilitation-service 8003:80 -n kangyang-robot &
|
|
|
|
# 性能分析
|
|
profile:
|
|
@echo "运行性能分析..."
|
|
@$(PYTHON) -m cProfile -o profile.stats services/health-monitoring/main.py
|
|
@$(PYTHON) -m pstats profile.stats
|
|
|
|
# 版本管理
|
|
VERSION ?= latest
|
|
|
|
tag:
|
|
@echo "创建版本标签..."
|
|
@git tag -a v$(VERSION) -m "Release version $(VERSION)"
|
|
@git push origin v$(VERSION)
|
|
|
|
release:
|
|
@echo "发布新版本..."
|
|
@make test-unit
|
|
@make build VERSION=$(VERSION)
|
|
@make push VERSION=$(VERSION)
|
|
@make tag VERSION=$(VERSION)
|
|
|
|
.DEFAULT_GOAL := help
|