DEPLOY-SHELL.md 4.77 KB

Shell 部署脚本使用说明

概述

为了简化部署流程,我们提供了两个 Shell 脚本:

  • deploy.sh - 主部署脚本,支持灵活的环境选择
  • deploy-config.sh - 配置脚本,预定义环境组合

快速开始

方法一:使用配置脚本(推荐)

  1. 编辑配置文件 ```bash # 编辑 deploy-config.sh vim deploy-config.sh

# 修改 upload_array 数组 upload_array=('dev' 'oa' 'mituo')


2. **执行部署**
   ```bash
   ./deploy-config.sh

方法二:直接使用主脚本

# 部署到指定环境
./deploy.sh dev oa mituo

# 部署到所有环境
./deploy.sh all

# 查看帮助
./deploy.sh --help

支持的环境

环境代码 环境名称 说明
dev 开发环境 开发测试环境
oa OA环境 OA系统环境
mituo 米托环境 米托相关环境
guanzong 观宗环境 观宗相关环境
baorong 宝融环境 宝融相关环境
taishan 泰山环境 泰山相关环境
xys XYS环境 XYS相关环境
zentea Zentea环境 Zentea相关环境

使用示例

1. 配置脚本示例

# deploy-config.sh 中的配置示例

# 仅部署开发和OA环境
upload_array=('dev' 'oa')

# 部署三个主要环境
upload_array=('dev' 'oa' 'mituo')

# 部署所有环境
upload_array=('all')

# 部署特定的几个环境
upload_array=('mituo' 'guanzong' 'baorong' 'taishan')

2. 直接命令示例

# 部署到开发环境
./deploy.sh dev

# 部署到开发和OA环境
./deploy.sh dev oa

# 部署到多个环境
./deploy.sh dev oa mituo guanzong

# 部署到所有环境
./deploy.sh all

脚本功能特性

🚀 智能部署流程

  1. 编译打包 - 自动执行 npm run buildnpm run tar
  2. 环境验证 - 检查指定环境是否有效
  3. 批量部署 - 依次部署到指定环境
  4. 自动清理 - 部署完成后清理临时文件

🎨 用户友好界面

  • 彩色输出 - 不同类型的消息使用不同颜色
  • 进度提示 - 实时显示部署进度
  • 结果汇总 - 显示部署成功/失败统计
  • 耗时统计 - 显示总部署时间

🛡️ 安全特性

  • 确认提示 - 部署前需要用户确认
  • 错误处理 - 遇到错误时停止执行
  • 信号捕获 - 支持 Ctrl+C 中断并清理
  • 环境验证 - 防止部署到无效环境

📊 详细日志

  • 实时状态 - 显示当前执行步骤
  • 错误信息 - 详细的错误提示
  • 成功反馈 - 明确的成功确认
  • 汇总报告 - 最终部署结果统计

故障排除

常见问题

  1. 权限问题

    # 如果脚本无法执行,添加执行权限
    chmod +x deploy.sh
    chmod +x deploy-config.sh
    
  2. 环境不存在

    # 检查 package.json 中是否有对应的 scp-* 和 dec-* 脚本
    # 例如:scp-dev, dec-dev
    
  3. 编译失败

    # 确保项目依赖已安装
    npm install
    

# 手动测试编译 npm run build


4. **网络问题**
   ```bash
   # 检查SSH连接
   ssh your-server

   # 检查SCP权限
   scp test.txt your-server:/path/

调试模式

# 在脚本开头添加调试选项
set -x  # 显示执行的每个命令
set -e  # 遇到错误立即退出

高级用法

自定义环境组合

你可以在 deploy-config.sh 中定义多个不同的环境组合:

# 开发组合
dev_array=('dev')

# 测试组合  
test_array=('dev' 'oa')

# 生产组合
prod_array=('mituo' 'guanzong' 'baorong' 'taishan')

# 全部组合
all_array=('all')

# 根据需要选择使用哪个组合
upload_array=("${test_array[@]}")

环境变量配置

# 可以通过环境变量传递配置
export DEPLOY_ENVS="dev,oa,mituo"
./deploy.sh ${DEPLOY_ENVS//,/ }

集成到CI/CD

# GitHub Actions 示例
- name: Deploy to environments
  run: |
    chmod +x deploy.sh
    ./deploy.sh dev oa

与npm脚本的对比

特性 npm脚本 Shell脚本
使用复杂度 中等 简单
环境选择 固定 灵活
批量部署 需要多个命令 一个命令
错误处理 基础 完善
用户界面 基础 友好
确认机制
进度显示

总结

Shell脚本提供了更加灵活和用户友好的部署方式:

简单易用 - 一行命令完成多环境部署
灵活配置 - 支持任意环境组合
安全可靠 - 完善的错误处理和确认机制
用户友好 - 彩色输出和详细进度提示
高效部署 - 一次编译,多环境部署

推荐使用 deploy-config.sh 进行日常部署,使用 deploy.sh 进行临时的灵活部署。