探讨关于制作构建环境版本参数的实践思路#16
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中,比较合理且优雅的实践思路应该是怎样的?
actions/setup-node
node-version
做成一个 cnb 插件 with 就对应 cnb 插件的 params 参数。 这个插件里面可以是 nvm 工具,然后插件接收到 node-version: 18 这样的参数后调用 nvm 来准备对应版本的 node 环境。
这个可能要在镜像里预装不少版本的node,似乎不是最理想的配置方案。 但如果是根据版本现安装,似乎速度上又不太理想。
@eryajf(二丫讲梵 | eryajf.net) 镜像里不需要 node,只要装个 nvm 就可以了,运行的时候 nvm 去下载对应版本的 node,这个速度可以实际测试一下,用 cnb 的网络来下的话应该还好,跟后面 npm install 的时间相比,下载个 node 的速度应该是也能接受。
用 nvm 在 cnb 里下载一个 node 也就 6 秒钟事件,我尝试搞一下这个插件。
@sixther(段超) 可以的,看了下github action中几个 setup 也是官方做的插件。
https://github.com/actions?q=setup&type=all&language=&sort=
简单撸了一个mvn 的插件,可以通过参数来指定 node 版本以及构建脚本,仅供参考 @eryajf(二丫讲梵 | eryajf.net)
https://cnb.cool/looc/nvm-plugin
优点 一个插件可以支持所有 node 版本 缺点 每次运行流水线的时候都需要动态下载 node 版本,相对比较费事,无法利用 cnb 的缓存能力,对效率有要求的还是推荐更加 cnb 的方式,使用一个版本一个镜像的方式,结合 cnb 的缓存能力可以非常快速的完成环境准备工作,这样也更加云原生一些。
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中,比较合理且优雅的实践思路应该是怎样的?