Jenkins 本身是用 Docker 部署在服务器上,以前在网页端打开具体前端项目,点击 “立即构建” Jenkins 就会在 git 上把项目文件更新然后用 npm 命令进行构建,以前一直没问题。直到最近因项目需求,某个项目需要引入一个 13M 的特殊 js 文件后,构建就没成功过。
具体情况是点击 “立即构建” 后,网页上能输出 console output,在输出中看到 git 的更新文件功能是正常的,但是一旦跑到前端的 npm 命令时,就会停在 loading 中(加载效果一直在转),没有任何反应,直至手动终止构建。
为了保证该项目本身是没有问题的,我在 git 上把项目拉取下来,放在任何一个电脑上,都能成功在电脑本地构建,同时可以确保的是,仓库上分支和代码版本是一致的,本地的 node/npm 版本和 npm 命令与 Jenkins 里的设置也是一致的。
前端构建的命令是 npm run limit && npm run build,对应的脚本是 cross-env LIMIT=4096 increase-memory-limit 和 vue-cli-service build。其中 limit 命令是项目构建失败了之后,经过搜索怀疑是 node 构建时对单文件大小有限制,所以使用了 limit 命令进行解除限制的处理。但是仍然没有任何效果。
更奇怪的是我把 Jenkins 构建命令换成 npx vue-cli-service build --verbose,依然构建不成功,也没有输出更多有效的日志。但是我发现只要不是跑 vue-cli-service build,而是 npm audit、npm run limit 等打包命令时,Jenkins 的输出是正常的(不卡住)。
由于 Jenkins 构建前端项目时没有任何有效的打印,所以请问 Jenkins 对于某个 jobs 是否可以有更详细的本地日志?使用 Jenkins CLI 或者打开 Jenkins Docker 能不能捕获更多构建时的信息?
我该如何去排查这个前端项目的构建问题?