DEPLOY-SHELL.md
4.77 KB
Shell 部署脚本使用说明
概述
为了简化部署流程,我们提供了两个 Shell 脚本:
-
deploy.sh- 主部署脚本,支持灵活的环境选择 -
deploy-config.sh- 配置脚本,预定义环境组合
快速开始
方法一:使用配置脚本(推荐)
- 编辑配置文件 ```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
脚本功能特性
🚀 智能部署流程
-
编译打包 - 自动执行
npm run build和npm run tar - 环境验证 - 检查指定环境是否有效
- 批量部署 - 依次部署到指定环境
- 自动清理 - 部署完成后清理临时文件
🎨 用户友好界面
- 彩色输出 - 不同类型的消息使用不同颜色
- 进度提示 - 实时显示部署进度
- 结果汇总 - 显示部署成功/失败统计
- 耗时统计 - 显示总部署时间
🛡️ 安全特性
- 确认提示 - 部署前需要用户确认
- 错误处理 - 遇到错误时停止执行
- 信号捕获 - 支持 Ctrl+C 中断并清理
- 环境验证 - 防止部署到无效环境
📊 详细日志
- 实时状态 - 显示当前执行步骤
- 错误信息 - 详细的错误提示
- 成功反馈 - 明确的成功确认
- 汇总报告 - 最终部署结果统计
故障排除
常见问题
-
权限问题
# 如果脚本无法执行,添加执行权限 chmod +x deploy.sh chmod +x deploy-config.sh -
环境不存在
# 检查 package.json 中是否有对应的 scp-* 和 dec-* 脚本 # 例如:scp-dev, dec-dev -
编译失败
# 确保项目依赖已安装 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 进行临时的灵活部署。