deploy-auto.sh 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/bin/bash
  2. # 自动部署脚本 - 由 webhook 触发
  3. # 用于 /data/ai/deploy.sh 的软链接
  4. set -e
  5. DEPLOY_LOG="/tmp/deploy-auto.log"
  6. PROJECT_DIR="/data/ai/audio_codebuddy"
  7. BACKEND_PORT="3100"
  8. log() {
  9. echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$DEPLOY_LOG"
  10. }
  11. log "========== 开始自动部署 =========="
  12. # 切换到项目目录
  13. cd "$PROJECT_DIR"
  14. # Git pull
  15. log "执行 git pull..."
  16. git pull origin master 2>&1 | tee -a "$DEPLOY_LOG"
  17. # 构建后端
  18. log "构建后端..."
  19. cd "$PROJECT_DIR/server"
  20. npm run build 2>&1 | tee -a "$DEPLOY_LOG"
  21. # 安装依赖(如果 package.json 有变化)
  22. log "检查依赖..."
  23. npm install --production 2>&1 | tee -a "$DEPLOY_LOG" || true
  24. # 重启后端服务
  25. log "重启后端服务..."
  26. # 使用 PM2 重启
  27. if command -v pm2 &> /dev/null; then
  28. pm2 restart server 2>&1 | tee -a "$DEPLOY_LOG" || pm2 start dist/app.js --name server 2>&1 | tee -a "$DEPLOY_LOG"
  29. pm2 save 2>&1 | tee -a "$DEPLOY_LOG"
  30. else
  31. log "PM2 未安装,跳过进程管理"
  32. fi
  33. log "========== 部署完成 =========="