logo
2
10
WeChat Login

探讨关于制作构建环境版本参数的实践思路#16

Resolved
created 2025-08-11
Edit

github action 经常会有这样的用法:

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
  with:
    node-version: 18
- run: npm ci
- run: npm test

我了解到当前cnb使用的插件,大部分是封装成一个镜像,那么,假如想要封装一个类似 actions/setup-node 这样的插件,关于接收node-version便应用对应版本的node的实践,在CNB中,比较合理且优雅的实践思路应该是怎样的?

added labels
有效问题
Developer

做成一个 cnb 插件
with 就对应 cnb 插件的 params 参数。
这个插件里面可以是 nvm 工具,然后插件接收到 node-version: 18 这样的参数后调用 nvm 来准备对应版本的 node 环境。

这个可能要在镜像里预装不少版本的node,似乎不是最理想的配置方案。
但如果是根据版本现安装,似乎速度上又不太理想。

Developer

这个可能要在镜像里预装不少版本的node,似乎不是最理想的配置方案。
但如果是根据版本现安装,似乎速度上又不太理想。

@eryajf(二丫讲梵 | eryajf.net) 镜像里不需要 node,只要装个 nvm 就可以了,运行的时候 nvm 去下载对应版本的 node,这个速度可以实际测试一下,用 cnb 的网络来下的话应该还好,跟后面 npm install 的时间相比,下载个 node 的速度应该是也能接受。

assigned self
Developer
6add19ce-3e24-4eec-a96b-c28712290b13.png 用 nvm 在 cnb 里下载一个 node 也就 6 秒钟事件,我尝试搞一下这个插件。
6add19ce-3e24-4eec-a96b-c28712290b13.png 用 nvm 在 cnb 里下载一个 node 也就 6 秒钟事件,我尝试搞一下这个插件。

@sixther(段超) 可以的,看了下github action中几个 setup 也是官方做的插件。

https://github.com/actions?q=setup&type=all&language=&sort=

67daee83-b5b1-4846-9a7d-173f9f04e355.png
4
Developer

简单撸了一个mvn 的插件,可以通过参数来指定 node 版本以及构建脚本,仅供参考 @eryajf(二丫讲梵 | eryajf.net)

https://cnb.cool/looc/nvm-plugin

优点 一个插件可以支持所有 node 版本
缺点 每次运行流水线的时候都需要动态下载 node 版本,相对比较费事,无法利用 cnb 的缓存能力,对效率有要求的还是推荐更加 cnb 的方式,使用一个版本一个镜像的方式,结合 cnb 的缓存能力可以非常快速的完成环境准备工作,这样也更加云原生一些。

1
added labels
擂主团已回答
Resolved ISSUE
Assignee
(段超)
Label
擂主团已回答
有效问题
Priority
None yet
Time period
-
Property
Add custom properties to record and label key information
Participant