jenkins自动化打包docker与nodejs问题

问题遇到的现象和发生背景

我需要使用jenkins为前端代码进行自动化打包,但是nodejs的安装环境需要jdk8,与jenkins的jdk11有差异
所以我使用docker来安装nodejs,并在jenkins中使用Execute shell执行打包命令

ls
pwd
echo $USER
sudo docker ps
sudo docker exec node bash -c "ls; \
                               node -v; \
                               cd www/; \
                               ls; \
                               npm run build;"

由于npm run build命令在打包完毕后,需要键盘输入ctrl+c退出,不退出则一直等待。
直接安装nodejs,问题依旧存在,必须键入ctrl+c才能退出,不接受任何shell命令,也找不到build.js文件中的‘build complete’行

img

img

于是遇到了jenkins脚本执行后无法继续也无法终止的问题

我的解答思路和尝试过的方法

我在网上找到的最好的解决方法,是找到build.js文件,并在最后增加强制退出。precess.exit(0)
源网页
http://t.csdn.cn/AmnDu

但是问题是我找遍nodejs容器中的所有build.js文件
都不存在‘ build complete.\n’这样的 执行成功提示 代码行,但是npm run build的命令执行完毕后又确实输出了build complete

所以很苦恼!

我想要达到的结果

1、想要知道是否有利用Execute shell发送ctrl+c信号的方法
2、想找到‘build complete’代码行具体存在于哪个文件,亦或是寻找npm run build执行路径的方法,网上的答案都很不理想。

但是nodejs的安装环境需要jdk8,与jenkins的jdk11有差异

你在jenkins的工作目录(docker内网与宿主机隐射的目录)下安装jdk8就可以了。

nodejs安装环境需要jdk?没听说过

问题已被我自行解决。
主要目的是想要找到退出npm run build打包完毕时的需要键入ctrl+c才能退出的界面的方法。
事实证明http://t.csdn.cn/AmnDu的方法是正确的,但是存在问题没有说明。
1、之前在所有build.js文件中一直找不到‘build complete’那行代码,所以也就想过去别的js文件中找,第一个目标就是index.js,但是一旦find你就会发现index.js文件数量多到可怕。所以目标应当是build文件夹下的index.js。最终找到的路径为node_modules/@vue/cli-service/lib/commands/build/index.js。
2、在resolve()前加上process.exit(0)即可实现自动退出,http://t.csdn.cn/AmnDu中写的是precess.exit(0),应该是程序员们不喜欢写真实代码的习惯所致的O(∩_∩)O哈哈~

img