You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
mirosociety/deploy.sh

58 lines
1.5 KiB

#!/usr/bin/env bash
# MiroSociety 一键部署脚本 (依赖安装)
# - 用 uv 创建后端 venv 并安装依赖
# - 用 npm 安装前端依赖
# 可重复执行,已安装会跳过。
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
BACKEND_DIR="$SCRIPT_DIR/backend"
FRONTEND_DIR="$SCRIPT_DIR/frontend"
cd "$SCRIPT_DIR"
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
log() { echo -e "${GREEN}[deploy.sh]${NC} $*"; }
warn() { echo -e "${YELLOW}[deploy.sh]${NC} $*"; }
err() { echo -e "${RED}[deploy.sh]${NC} $*" >&2; }
# --- 检查命令依赖 ---
for cmd in uv npm node; do
if ! command -v "$cmd" >/dev/null 2>&1; then
err "缺少依赖命令: $cmd"
exit 1
fi
done
VENV_DIR="$BACKEND_DIR/.venv"
VENV_PY="$VENV_DIR/bin/python3"
# --- 后端: uv venv + pip install ---
log "检查后端环境..."
if [[ ! -x "$VENV_PY" ]]; then
warn "未检测到 $VENV_DIR,使用 uv 创建 venv..."
(cd "$BACKEND_DIR" && uv venv)
fi
log "安装/更新后端依赖 (uv pip install -e .)..."
(cd "$BACKEND_DIR" && uv pip install -e .)
# --- 前端: npm install ---
log "检查前端环境..."
if [[ ! -d "$FRONTEND_DIR/node_modules" ]]; then
warn "未检测到 $FRONTEND_DIR/node_modules,开始 npm install..."
(cd "$FRONTEND_DIR" && npm install)
else
log "$FRONTEND_DIR/node_modules 已存在,跳过 (如需重装请删除该目录)"
fi
echo
log "部署完成 ✓"
echo -e " ${GREEN}后端 venv:${NC} $VENV_DIR"
echo -e " ${GREEN}前端依赖:${NC} frontend/node_modules"
echo
log "现在可以执行 ./start.sh 启动服务"