使用 Docker 部署的 Jenkins 在网页上点击构建指定前端项目时,构建正常开始运行,网页上也能输出 console output ,然后 git 的更新文件部分是正常的,但是跑到前端的 node 命令时,一直卡在 loading 中(加载效果一直在转),没有任何反应,直至手动终止构建。
但是该前端项目,在 git 上拉取下来,放在任何一个电脑上,都能使用相同的命令成功在本地构建,能保证仓库上分支和代码版本是一致的,本地的 node/npm 版本和 npm 命令与 Jenkins 里的设置也是一致的。
前端构建的命令是 npm run limit && npm run build,对应的脚本是 cross-env LIMIT=4096 increase-memory-limit 和 vue-cli-service build。需要注意的是 Jenkins 在以前一直正常构建并部署,但是自从前端项目需要引入一个 26MB 的特殊 js 库之后,就出现了如上所述的情况,经过搜索,怀疑是 node 构建时对单文件大小有限制,所以使用了 limit 命令进行解除限制的处理。但是仍然没有任何效果。
由于 Jenkins 构建前端项目时没有任何有效的打印,所以请问 Jenkins 对于某个 jobs 是否可以有更详细的本地日志?
我该如何去排查这个前端项目的构建问题?
Jenkins 构建本质是在执行构建命令,构建命令是有输出的,而 Jenkins 可以看到每次构建的控制台输出。
如果输出的信息不够明确,可以考虑在构建命令中添加输出详细信息的参数,比如某些命令可能知道
--verbose
。另外,
npm run build
理论上来说执行的是一个是有终结点的过程,而不是像npm start
在某些时候会一直处于等待状态(如 Web 服务),所以一直 loading 是不正常的现象,最有可能的事情是网络阻碍,比如在npm install
的时候部分资源下载不下来,一直卡在那(手工npm install
有时候也会出现这种现象)。具体是什么问题还是尽量要从控制台输出去分析原因,前期瞎猜一阵可以,但多猜无益。