前言
事情是这样的,公司项目发版使用的 Azure DevOps
,前段时间测试老师找过来说代码发布失败了,有代码报错,让我查一下,刚开始我猜测应该代码哪里写的有问题,之前也遇到过这种问题,改一下应该就行了
万万没想到,世界真奇妙......
项目框架及版本
- JS框架 Angular: 8.1.0
- TypeScript: 3.4.3
- UI库 devextreme:19.2.5
来分析一下遇到的问题
本地排查
下面是报错截图,看里面的内容似乎是代码报错导致的
具体看一下,看起来像 xxx.ts
里面的代码有问题,npm run build-uat
命令导致的发版失败
在代码仓库中找到了对应的报错文件并找到了控制台中报错行数 11:30
, 看着没有问题,整个文件的代码都看了,没有异常的地方
npm run start
本地环境运行查看项目相关报错文件,查看报错情况,没有报错,使用 npm run build-uat
本地打包也正常,没有报错
为了排查个人电脑独特环境配置情况下才正常的情况,找了其他两个前端开发老师执行
npm run build-uat
打包命令,也都正常
果然,我写的代码怎么会有这种问题!😏
本地排查已经说明代码没有问题了,问题应该出在 DevOps
服务的环境上面
服务端排查
把本地的代码 push
到 GitLab
仓库,重新在 DevOps
平台页面上生成测试效果,发现不管生成几次,都是这个报错,DevOps
服务器不知道地址,也没有权限账号,找到有权限的架构部门相关的技术老师,说明原因后,让别人帮忙把代码单独在服务器上的镜像中运行看看效果
这个是单独在服务器上运行以后的报错截图,还是这个报错
第二天再去找架构部负责帮忙排查的那个老师,那个老师说排查后没检查出什么原因,发版的话先走其他方式吧,后面再研究研究看看,提供了一个临时方案
临时方案
由于 npm run build-uat
命令打包失败,又不能不用 DevOps
平台,让我们把线上的打包的环节放到本地,把 DevOps
的上的 install
和 build
安装打包命令先去掉,只留下其他命令脚本;把代码仓库的 .gitignore
中的 dist
文件忽略放开,然后提交把打包好的 dist
文件提交到线上的仓库中
都这年头了自动化发版不能用,仿佛一下子回到了技术领域的石器时代
现在的样子
架构部门的技术老师没搞定,反馈给公司的架构师看了,说帮忙弄下,后来也没了动静,然后就一直用的临时方案到现在,就是我们组的这几个前端开发悲剧了,每次提交都是拉一堆文件,然后本地打包,每次打包十几分钟,然后再提交一堆上去,每次几十个文件,仓库越来越大,本地运行打包速度也会越来越慢
以目前的情况,感觉项目仓库迟早要崩呀 😟
这种问题怎么解决
- 和架构部的人也不熟,上次找别人还是和我们这边测试负责人一起去的,别的部门也有自己部门的任务,可能帮忙看了看没找到问题后面也就没顾上再看了,自己直接去找到级别也不够,只能再次给我们这边的测试负责人和部门负责人反馈,推动上级让他们去协调跟进
- 技术层面上分析这个打包问题,看起来是
DevOps
中的Docker
镜像容器环境出的问题,那么是不是可以本地安装Docker
拉取Node
镜像搭建前端环境容器,本地在Docker
容器中进行测试,如果没问题,可以把本地的Docker
镜像导出来提供给架构部再次测试
还有更好的解决方案吗?