用 Walle 做 CI/CD , 构建 Node.js 项目, 在 npm install 的时候会出现问题

2021-07-07 21:47:39 +08:00
 kenshin912
Docker-compose 起了个 Walle 服务 , 挂载了宿主机上的 JDK , Maven , Node.js 的目录进 Walle 容器.
Maven 编译 Jar 包已经弄好了 , 剩下的就是前端 , 可是只要 npm install 就会出现各种奇怪的错误 , 看了下报错的解决方案 , 几乎都是和 node_modules 这个目录有关系 , 怎么都无法顺利 npm install .
而且我还有个疑问 , 即使我顺利的让它 npm install 了, 也不能每次编译都 npm install 一次吧? 尝试用 ln -sfn 把 node_modules 软链接过来也会报错.
我真的是服了. 本地拉了个 Jenkins 容器 , 随便折腾一下 , npm install 就很顺利 , run build 更顺利 ...
用 Walle 主要看重它方便回滚 , Jenkins 我自己还要写脚本还要设置.
有没有用 Walle 的大佬 , 让我看看你们的 Node.js 项目是怎么做的自动构建的呢?

或者说 , 我是不是应该把 npm run build 的事情丢给开发 , 让他们 build 好了推到 gitlab 上得了 ? 感觉会被公司的开发打死...
2217 次点击
所在节点    DevOps
12 条回复
hteen
2021-07-07 22:52:53 +08:00
walle 好像都不维护了, 已经转投 spug

https://www.spug.dev/docs/example-node/
JerryCha
2021-07-07 23:26:02 +08:00
「而且我还有个疑问 , 即使我顺利的让它 npm install 了, 也不能每次编译都 npm install 一次吧? 」
----------------------------------------------------------------------------------------------------------------------
构建时不 install,新的依赖就不会被安装,你还是会被开发打死。
Vegetable
2021-07-08 00:06:16 +08:00
node_modules 在 ci 时必须要缓存的。
chenluo0429
2021-07-08 09:12:04 +08:00
1. node_modules 缓存;
2. 用 verdaccio 之类的搭建一个内网的 proxy registry ;
我建议用第二个,保证每次构建过程都是完整的
kenshin912
2021-07-08 10:09:02 +08:00
@hteen #1 感谢 , 你发的链接 , 让我注意到了 spug 的 node example , 我在 walle 上用 yarn 成功的编译出 dist .
kenshin912
2021-07-08 10:11:04 +08:00
@JerryCha #2

@Vegetable #3

@chenluo0429 #4

感谢 , 用了 yarn , 并且编译前设置了 yarn --cache-folder , 把缓存目录放到编译目录以外的地方 , 应该就可以了吧?
basefas
2021-07-08 10:15:44 +08:00
所以为什么不在 docker 里打包,然后制作成 docker 镜像呢
kenshin912
2021-07-08 10:39:18 +08:00
@basefas #7 开发没几个会用 Docker 啊 , 线上环境也不是 Docker , 我也很苦恼 .
basefas
2021-07-08 11:16:16 +08:00
@kenshin912 #8 如果只有 node 项目的话,可以考虑在 docker 里编译,然后将编译文件从容器中拷贝出来
kenshin912
2021-07-08 14:42:58 +08:00
@basefas #9 我的需求是开发那边 Merge 代码后 ,可以进行快速构建,上线并且可以快速回滚。
你说的这个办法我可能没理解如何操作。。。
我是拉一个 node.js 的 Docker image,然后启动一个容器 , 在这个容器中编译 ,然后 cp 生成的 dist 到容器外部嘛?
basefas
2021-07-08 15:32:45 +08:00
@kenshin912 #10 对的,而且你如果用 gitlab 的话,可以考虑使用 gitlab-ci 做 cicd
kenshin912
2021-07-08 16:17:20 +08:00
@basefas #11 这个要搭配 gitlab-runner 吧 ?
之前我用 gitlab-runner 实现过 Merge 代码触发自动构建。
但是针对回滚这块我就没接触了,现在用 Walle 也是图个方便回滚。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/788174

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX