边缘前端 npm run deploy

742 阅读2分钟

image.png

常言道:穷则思变,程序员的思变却是原动力。自身的洁癖、自身的困局、自身的创新等等

背景

参与的是一个大型企业管理系统的开发,系统层面来看项目很冗余,业务边界不清晰。逐步引入qiankun搞微应用、低代码搞通用业务,在业务、代码层级清晰了不少。但同时伴随着部署上复杂性更高。

  1. qiankun拆分完微应用,由原来四个项目变成九个项目。对于DEV环境,在开发部署上复杂性提高。eg:一个需求可能需要多个微应用配合完成,即需要同时打包部署多个dist。
  2. 在存在负载的场景中,又可能同时部署多个节点。

image.png

尝试

从整个过程来分析,基本上是目录的生成、压缩、解压、迁移。先从生成目录开始,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工作区,区分强制部署还是提交后再部署

image.png

部署日志

image.png 部署日志记录,针对每次部署。记录:

  • 最新提交的Git记录,文件信息、提交人、提交时间等
  • 部署时间
  • 部署人(采集vscode操作人)
  • 备份文件包信息
备份

部署过程中在环境上备份上次dist包,压缩成.tar.gz,以当前时间拼接起名。最多保留最近10份dist包

回滚

以备份为基础,回滚最近一次备份包

效果

image.png

  1. 时间效率大大提高,目前方案只需配置deploy_IP,全自动化驱动
  2. 部署过程可追踪,可快速回滚修复环境。(适合问题单验证场景)