81 lines
2.0 KiB
Bash
81 lines
2.0 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
set -x
|
|
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
echo -e "${YELLOW}开始部署流程...${NC}"
|
|
|
|
# 首先加载环境变量
|
|
if [ "$NODE_ENV" = "production" ]; then
|
|
echo -e "${GREEN}加载生产环境配置...${NC}"
|
|
set -a
|
|
source .env.production
|
|
set +a
|
|
else
|
|
echo -e "${GREEN}加载开发环境配置...${NC}"
|
|
set -a
|
|
source .env.development
|
|
set +a
|
|
fi
|
|
|
|
# 安装依赖
|
|
echo -e "${GREEN}安装依赖...${NC}"
|
|
NODE_ENV= pnpm install --ignore-workspace
|
|
|
|
# 生成 Prisma 客户端
|
|
echo -e "${GREEN}生成 Prisma 客户端...${NC}"
|
|
npx prisma generate
|
|
|
|
# 类型检查
|
|
echo -e "${GREEN}运行类型检查...${NC}"
|
|
pnpm tsc --noEmit
|
|
|
|
# 询问是否同步数据库架构
|
|
echo -e "${YELLOW}是否需要同步数据库架构? (y/n)${NC}"
|
|
read -r sync_db
|
|
if [ "$sync_db" = "y" ] || [ "$sync_db" = "Y" ]; then
|
|
echo -e "${GREEN}开始同步数据库架构...${NC}"
|
|
if [ "$NODE_ENV" = "production" ]; then
|
|
npx prisma db push
|
|
else
|
|
npx prisma db push
|
|
fi
|
|
else
|
|
echo -e "${YELLOW}跳过数据库同步${NC}"
|
|
fi
|
|
|
|
# 构建项目
|
|
echo -e "${GREEN}构建项目...${NC}"
|
|
pnpm build
|
|
|
|
# 检查并安装 PM2
|
|
echo -e "${GREEN}检查 PM2...${NC}"
|
|
if ! command -v pm2 &> /dev/null; then
|
|
echo -e "${YELLOW}PM2 未安装,正在安装 5.4.3 版本...${NC}"
|
|
pnpm add pm2@5.4.3 -g
|
|
else
|
|
PM2_VERSION=$(pm2 -v)
|
|
if [ "$PM2_VERSION" != "5.4.3" ]; then
|
|
echo -e "${YELLOW}错误: PM2 版本必须是 5.4.3,当前版本是 ${PM2_VERSION}${NC}"
|
|
echo -e "${YELLOW}请运行以下命令更新 PM2:${NC}"
|
|
echo -e "${YELLOW}pm2 kill && pnpm remove pm2 -g && rm -rf ~/.pm2 && pnpm add pm2@5.4.3 -g${NC}"
|
|
exit 1
|
|
else
|
|
echo -e "${GREEN}PM2 5.4.3 已安装${NC}"
|
|
fi
|
|
fi
|
|
|
|
# 启动服务
|
|
if [ "$NODE_ENV" = "production" ]; then
|
|
echo -e "${GREEN}以生产模式启动服务...${NC}"
|
|
pm2 start dist/src/main.js --name limq
|
|
else
|
|
echo -e "${GREEN}以开发模式启动服务...${NC}"
|
|
pm2 start dist/src/main.js --name limq-dev --watch
|
|
fi
|
|
|
|
echo -e "${GREEN}部署完成!${NC}" |