常言道:穷则思变,程序员的思变却是原动力。自身的洁癖、自身的困局、自身的创新等等
背景
参与的是一个大型企业管理系统的开发,系统层面来看项目很冗余,业务边界不清晰。逐步引入qiankun搞微应用、低代码搞通用业务,在业务、代码层级清晰了不少。但同时伴随着部署上复杂性更高。
- qiankun拆分完微应用,由原来四个项目变成九个项目。对于DEV环境,在开发部署上复杂性提高。eg:一个需求可能需要多个微应用配合完成,即需要同时打包部署多个dist。
- 在存在负载的场景中,又可能同时部署多个节点。
尝试
从整个过程来分析,基本上是目录的生成、压缩、解压、迁移。先从生成目录开始,npm run build过程中可能采取多进程打包,本身比较占用资源,多个微应用的build采用串行方式。压缩、上传、解压、迁移过程以node脚本驱动,对接SSH2包来完成。
// build
npm run build
// deploy
// 检查git工作区,如果有未提交的代码提示
npm run deploy
npm run deploy --force
// build and deploy
// 打包+部署联动
npm run build-deploy
在.env中配置deploy_IP
(部署节点),支持配置单节点和多节点部署。在脚本运行过程中读取当前配置来完成目标环境的部署。
检查
部署前检查git工作区,区分强制部署还是提交后再部署
部署日志
部署日志记录,针对每次部署。记录:
- 最新提交的Git记录,文件信息、提交人、提交时间等
- 部署时间
- 部署人(采集
vscode
操作人) - 备份文件包信息
备份
部署过程中在环境上备份上次dist包,压缩成.tar.gz
,以当前时间拼接起名。最多保留最近10份dist包
回滚
以备份为基础,回滚最近一次备份包
效果
- 时间效率大大提高,目前方案只需配置
deploy_IP
,全自动化驱动 - 部署过程可追踪,可快速回滚修复环境。(适合问题单验证场景)