🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
232 lines
5.0 KiB
Bash
232 lines
5.0 KiB
Bash
#!/bin/bash
|
|
|
|
# 康养机器人项目环境初始化脚本
|
|
# Usage: ./setup.sh [dev|staging|prod]
|
|
|
|
set -e
|
|
|
|
ENVIRONMENT=${1:-dev}
|
|
PROJECT_ROOT=$(pwd)
|
|
|
|
echo "=========================================="
|
|
echo "康养机器人项目环境初始化"
|
|
echo "环境: $ENVIRONMENT"
|
|
echo "项目根目录: $PROJECT_ROOT"
|
|
echo "=========================================="
|
|
|
|
# 检查必要工具
|
|
check_requirements() {
|
|
echo "检查必要工具..."
|
|
|
|
commands=("docker" "kubectl" "python3" "npm" "git")
|
|
for cmd in "${commands[@]}"; do
|
|
if ! command -v $cmd &> /dev/null; then
|
|
echo "❌ $cmd 未安装"
|
|
exit 1
|
|
else
|
|
echo "✅ $cmd 已安装"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# 创建项目目录结构
|
|
create_project_structure() {
|
|
echo "创建项目目录结构..."
|
|
|
|
directories=(
|
|
"services/health-monitoring"
|
|
"services/companion-service"
|
|
"services/rehabilitation-service"
|
|
"services/api-gateway"
|
|
"frontend/web-admin"
|
|
"frontend/mobile-app"
|
|
"infrastructure/docker"
|
|
"infrastructure/k8s"
|
|
"infrastructure/terraform"
|
|
"tests/unit"
|
|
"tests/integration"
|
|
"tests/e2e"
|
|
"tests/performance"
|
|
"monitoring/prometheus"
|
|
"monitoring/grafana"
|
|
"scripts"
|
|
"docs"
|
|
)
|
|
|
|
for dir in "${directories[@]}"; do
|
|
mkdir -p "$PROJECT_ROOT/$dir"
|
|
echo " 创建目录: $dir"
|
|
done
|
|
}
|
|
|
|
# 初始化Python虚拟环境
|
|
setup_python_env() {
|
|
echo "设置Python环境..."
|
|
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
|
|
pip install --upgrade pip
|
|
pip install -r requirements.txt
|
|
pip install -r requirements-dev.txt
|
|
|
|
echo "✅ Python环境设置完成"
|
|
}
|
|
|
|
# 安装Node.js依赖
|
|
setup_node_env() {
|
|
echo "设置Node.js环境..."
|
|
|
|
cd "$PROJECT_ROOT/frontend/web-admin"
|
|
npm install
|
|
|
|
cd "$PROJECT_ROOT/frontend/mobile-app"
|
|
npm install
|
|
|
|
cd "$PROJECT_ROOT"
|
|
echo "✅ Node.js环境设置完成"
|
|
}
|
|
|
|
# 配置Docker
|
|
setup_docker() {
|
|
echo "配置Docker环境..."
|
|
|
|
# 创建Docker网络
|
|
docker network create kangyang-network 2>/dev/null || true
|
|
|
|
# 启动基础服务
|
|
docker-compose -f infrastructure/docker/docker-compose.yml up -d
|
|
|
|
echo "✅ Docker环境配置完成"
|
|
}
|
|
|
|
# 配置Kubernetes
|
|
setup_kubernetes() {
|
|
echo "配置Kubernetes环境..."
|
|
|
|
# 创建命名空间
|
|
kubectl create namespace kangyang-robot --dry-run=client -o yaml | kubectl apply -f -
|
|
kubectl create namespace monitoring --dry-run=client -o yaml | kubectl apply -f -
|
|
kubectl create namespace logging --dry-run=client -o yaml | kubectl apply -f -
|
|
|
|
# 应用配置
|
|
kubectl apply -f infrastructure/k8s/configmaps/
|
|
kubectl apply -f infrastructure/k8s/secrets/
|
|
|
|
echo "✅ Kubernetes环境配置完成"
|
|
}
|
|
|
|
# 初始化Git hooks
|
|
setup_git_hooks() {
|
|
echo "设置Git hooks..."
|
|
|
|
cat > .git/hooks/pre-commit << 'EOF'
|
|
#!/bin/bash
|
|
# 运行代码检查
|
|
python -m black --check .
|
|
python -m flake8 .
|
|
python -m mypy .
|
|
|
|
# 运行单元测试
|
|
pytest tests/unit --tb=short
|
|
|
|
# 检查敏感信息
|
|
git diff --cached --name-only | xargs -I {} python scripts/check_secrets.py {}
|
|
EOF
|
|
|
|
chmod +x .git/hooks/pre-commit
|
|
|
|
echo "✅ Git hooks设置完成"
|
|
}
|
|
|
|
# 生成环境配置文件
|
|
generate_env_files() {
|
|
echo "生成环境配置文件..."
|
|
|
|
cat > .env.$ENVIRONMENT << EOF
|
|
# 环境配置
|
|
ENVIRONMENT=$ENVIRONMENT
|
|
DEBUG=$([ "$ENVIRONMENT" = "dev" ] && echo "true" || echo "false")
|
|
|
|
# 数据库配置
|
|
DB_HOST=localhost
|
|
DB_PORT=3306
|
|
DB_NAME=kangyang_$ENVIRONMENT
|
|
DB_USER=kangyang
|
|
DB_PASSWORD=changeme
|
|
|
|
# Redis配置
|
|
REDIS_HOST=localhost
|
|
REDIS_PORT=6379
|
|
REDIS_PASSWORD=
|
|
|
|
# Kafka配置
|
|
KAFKA_BROKERS=localhost:9092
|
|
|
|
# API配置
|
|
API_HOST=0.0.0.0
|
|
API_PORT=8000
|
|
|
|
# JWT配置
|
|
JWT_SECRET=your-secret-key-here
|
|
JWT_ALGORITHM=HS256
|
|
JWT_EXPIRATION=3600
|
|
|
|
# 监控配置
|
|
PROMETHEUS_PORT=9090
|
|
GRAFANA_PORT=3000
|
|
|
|
# 日志配置
|
|
LOG_LEVEL=$([ "$ENVIRONMENT" = "dev" ] && echo "DEBUG" || echo "INFO")
|
|
LOG_FORMAT=json
|
|
EOF
|
|
|
|
echo "✅ 环境配置文件生成完成"
|
|
}
|
|
|
|
# 初始化数据库
|
|
setup_database() {
|
|
echo "初始化数据库..."
|
|
|
|
# 等待数据库启动
|
|
sleep 5
|
|
|
|
# 运行数据库迁移
|
|
python scripts/migrate_database.py
|
|
|
|
# 导入初始数据
|
|
python scripts/seed_database.py
|
|
|
|
echo "✅ 数据库初始化完成"
|
|
}
|
|
|
|
# 主函数
|
|
main() {
|
|
check_requirements
|
|
create_project_structure
|
|
setup_python_env
|
|
setup_node_env
|
|
setup_docker
|
|
|
|
if [ "$ENVIRONMENT" != "dev" ]; then
|
|
setup_kubernetes
|
|
fi
|
|
|
|
setup_git_hooks
|
|
generate_env_files
|
|
setup_database
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "✅ 环境初始化完成!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "下一步:"
|
|
echo "1. 启动开发服务器: make run-dev"
|
|
echo "2. 运行测试: make test"
|
|
echo "3. 查看文档: make docs"
|
|
echo ""
|
|
}
|
|
|
|
# 执行主函数
|
|
main |