H5 项目多环境部署方案
概述
本部署方案支持将 H5 项目一键部署到一个或多个环境,适用于前端开发团队的日常发布流程。
特性
- ✅ 多环境支持:dev、oa、behalo 三个环境
- ✅ 批量部署:一次部署到多个环境
- ✅ 交互确认:部署前需确认,防止误操作
- ✅ 自动归档:自动打包构建产物
- ✅ 进度提示:清晰的部署进度和结果反馈
快速开始
环境要求
- Node.js 18.19.1(项目使用
.nvm管理) - pnpm
- SSH 访问权限(配置
ipadbiz-inner别名)
部署命令
# 单环境部署
pnpm deploy:dev # 部署到开发环境
pnpm deploy:oa # 部署到 OA 环境
pnpm deploy:behalo # 部署到 Behalo 环境
# 或者使用脚本直接调用
./deploy/deploy.sh dev
./deploy/deploy.sh oa
./deploy/deploy.sh behalo
# 多环境部署
./deploy/deploy.sh dev oa # 部署到开发和 OA 环境
./deploy/deploy.sh dev oa behalo # 部署到所有环境
环境说明
| 环境名称 | 服务器路径 | 访问地址 | 说明 |
|---|---|---|---|
| dev | /opt/space-dev/f |
http://oa-dev.onwall.cn | 开发环境 |
| oa | /opt/oa/f |
http://oa.onwall.cn | OA 环境 |
| behalo | /opt/behalo/f |
http://behalo.onwall.cn | Behalo 环境 |
部署流程
1. 检查环境
↓
2. 确认部署环境(交互式)
↓
3. 执行构建 (pnpm build)
↓
4. 创建归档 (mlaj.tar.gz)
↓
5. 上传归档到服务器
↓
6. 远程解压部署
↓
7. 清理归档文件
↓
8. 显示访问地址
文件结构
deploy/
├── README.md # 本文档
├── config.sh # 环境配置文件
└── deploy.sh # 主部署脚本
config.sh
环境配置文件,定义了每个环境的:
- 服务器信息(SSH 别名)
- 远程部署路径
- 构建命令和产物目录
- 备份配置
- 健康检查配置(预留)
- 通知配置(预留)
配置结构:
# 每个环境对应一个配置函数
deploy_config_dev() {
export PROJECT_NAME="mlaj"
export SERVER_HOST="ipadbiz-inner"
export REMOTE_DEPLOY_DIR="/opt/space-dev/f"
export BUILD_DIR="dist"
export BUILD_COMMAND="pnpm build"
# ...
}
deploy.sh
主部署脚本,负责:
- 检查必需命令(pnpm、ssh、scp、tar)
- 解析环境参数
- 加载对应环境配置
- 执行构建
- 创建并上传归档
- 远程解压部署
- 输出部署结果
添加新环境
- 在
config.sh中添加配置函数:
deploy_config_newenv() {
export PROJECT_NAME="mlaj"
export SERVER_HOST="your-ssh-alias"
export REMOTE_DEPLOY_DIR="/path/to/deploy"
export BUILD_DIR="dist"
export BUILD_COMMAND="pnpm build"
# ...其他配置
}
- 在
config.sh的load_env_config()函数中添加:
load_env_config() {
case "$1" in
# ...现有环境
newenv)
deploy_config_newenv
;;
# ...
esac
}
- 在
deploy.sh的提示信息中添加新环境名称
常见问题
Q: SSH 连接失败?
确保已配置 SSH 别名 ipadbiz-inner,在 ~/.ssh/config 中:
Host ipadbiz-inner
HostName your-server-ip
User your-username
Port 22
IdentityFile ~/.ssh/your-key
Q: 构建失败?
检查 Node.js 版本是否为 18.19.1:
nvm use 18.19.1
Q: 权限不足?
确保脚本有执行权限:
chmod +x deploy/deploy.sh
chmod +x deploy/config.sh
注意事项
- 部署前确认:脚本会在部署前要求确认,请仔细核对环境
- 构建时间:首次构建可能需要较长时间,请耐心等待
- 网络稳定:部署过程中请保持网络稳定
- 环境隔离:不同环境的配置相互独立,互不影响
维护者: 前端开发团队 最后更新: 2026-02-23