一次jenkins打包失败的解决过程

2,128 阅读2分钟

这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

新的一天,小白又遇到了新的挑战——jenkins打包不成功。

下面给大家复现一下问题的解决全过程。

遇到问题

低权限小白看到的jenkins报错

wget: missing URL

运维看到的jenkins报错

gulp: command not found

小白:对对对!我加了新的打包命令gulp && webpack -p,你这个是依赖包没有安装,jenkins 不会主动安装依赖包吗?我的依赖配置都在 package.json 文件里,jenkins 编译的时候应该主动就安装了呀。

运维:怎么安装依赖?

小白:我本地是执行npm i

运维:脚本执行一下 npm i 试试。

报错:Maximum call stack size exceeded

小白:迷茫,问问我领导吧。

直属领导:你本地 node 版本和 gulp 版本分别是多少?可能是 node 版本和 gulp 版本不一致导致的。

小白node 版本10,gulp 版本3.9.1。

直属领导jenkins 上的 node 版本是12,支持的 gulp 版本是4,你给 gulp 升级一下,语法也替换一下。

知识点:node 12.0的版本之后(包括12.0版本)不支持gulp4.0之前的版本

解决问题

将gulp升级为4.0版本,升级gulp语法到4.0版本

查看本地gulp版本

gulp -v

小白:是 3.9.1 没错。

卸载老版本gulp,升级gulp版本至4.0以上

npm uninstall gulp
npm install --save-dev gulp

小白:此时 gulp 版本升级为 4.0.2

将本地node版本升级至12以上

n 命令安装指定版本的 node

sudo n 12.22.7

执行打包命令(根据自己package.json文件配置情况执行相应命令)

npm run build

报错:Task function must be specified

小白:语法错误,打开 gulp官网

替换gulp语法至4.0

例子:

执行default任务时,依次执行以下任务:
原写法:gulp.task('default', ['htmlmin', 'cssmin', 'jsmin', 'copy']);
改为:gulp.task('default', gulp.series('htmlmin', 'cssmin', 'jsmin', 'copy'));

再次执行打包命令

npm run build

小白:成功!push代码!

小白jenkins打包还是失败,报错和之前一样,好像不是这个原因导致的,找领导帮忙看一下。

直属领导:缺包,npm i 一下试试。

报错:Maximum call stack size exceeded

小白:懵逼中。。。

直属领导:鼓捣半天, jenkins 打包时没有勾选 npm install 选项。

小白:???可能是之前配过 npm install 选项,不可以在脚本里重复执行 npm install

虽然是乌龙一场,不太理解什么原因导致的手动执行npm i时出现 Maximum call stack size exceeded 错误,但是 node12 版本只支持 gulp4.0 以上的版本,这个点是正确的;可能这个问题不解决,npm i问题的下一个问题就是它了。

遇到问题有时还是要相信自己看到的原因。

gulp 3.0 升级到 gulp 4.0 Task语法修改参考文献:www.jianshu.com/p/c30ff8592…

node过往版本:nodejs.org/zh-cn/downl…