用 Walle 做 CI/CD , 构建 Node.js 项目, 在 npm install 的时候会出现问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kenshin912
V2EX    DevOps

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

  •  
  •   kenshin912 2021-07-07 21:47:39 +08:00 2577 次点击
    这是一个创建于 1556 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 上得了 ? 感觉会被公司的开发打死...
    12 条回复    2021-07-08 16:17:20 +08:00
    hteen
        1
    hteen  
       2021-07-07 22:52:53 +08:00
    walle 好像都不维护了, 已经转投 spug

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

    @Vegetable #3

    @chenluo0429 #4

    感谢 , 用了 yarn , 并且编译前设置了 yarn --cache-folder , 把缓存目录放到编译目录以外的地方 , 应该就可以了吧?
    basefas
        7
    basefas  
       2021-07-08 10:15:44 +08:00
    所以为什么不在 docker 里打包,然后制作成 docker 镜像呢
    kenshin912
        8
    kenshin912  
    OP
       2021-07-08 10:39:18 +08:00
    @basefas #7 开发没几个会用 Docker 啊 , 线上环境也不是 Docker , 我也很苦恼 .
    basefas
        9
    basefas  
       2021-07-08 11:16:16 +08:00
    @kenshin912 #8 如果只有 node 项目的话,可以考虑在 docker 里编译,然后将编译文件从容器中拷贝出来
    kenshin912
        10
    kenshin912  
    OP
       2021-07-08 14:42:58 +08:00
    @basefas #9 我的需求是开发那边 Merge 代码后 ,可以进行快速构建,上线并且可以快速回滚。
    你说的这个办法我可能没理解如何操作。。。
    我是拉一个 node.js 的 Docker image,然后启动一个容器 , 在这个容器中编译 ,然后 cp 生成的 dist 到容器外部嘛?
    basefas
        11
    basefas  
       2021-07-08 15:32:45 +08:00
    @kenshin912 #10 对的,而且你如果用 gitlab 的话,可以考虑使用 gitlab-ci 做 cicd
    kenshin912
        12
    kenshin912  
    OP
       2021-07-08 16:17:20 +08:00
    @basefas #11 这个要搭配 gitlab-runner 吧 ?
    之前我用 gitlab-runner 实现过 Merge 代码触发自动构建。
    但是针对回滚这块我就没接触了,现在用 Walle 也是图个方便回滚。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5939 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 06:29 PVG 14:29 LAX 23:29 JFK 02:29
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86