Rust项目GitHub Actions报Node.js版本警告,疑惑为何依赖Node.js
问题:Rust项目GitHub Actions工作流为何依赖Node.js?
我在为Rust项目配置GitHub Actions工作流时,执行Rustfmt任务收到了Node.js 12已弃用的警告,要求更新actions-rs/toolchain、actions-rs/cargo到Node.js 16。我的工作流配置如下:
name: Rust on: push: branches: [ "develop" ] pull_request: branches: [ "develop" ] env: CARGO_TERM_COLOR: always jobs: fmt: name: Rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: toolchain: stable override: true components: rustfmt - uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check ...
收到的警告信息:
Rustfmt
Node.js 12 actions are deprecated.
Please update the following actions to use Node.js 16: actions-rs/toolchain, actions-rs/cargo
回答:
- GitHub Actions里的自定义Action本质是运行在runner环境中的执行单元,
actions-rs/toolchain、actions-rs/cargo这类社区维护的Action,底层是用Node.js开发的。 - 这些Action的核心功能是帮你安装Rust工具链、调用cargo命令,但它们自身作为GitHub Actions的一部分,需要依赖Node.js来启动运行——比如处理你传入的参数、和GitHub的API交互、调用系统命令等逻辑,都是靠Node.js代码实现的。
- 你用的
actions-rs/toolchain@v1、actions-rs/cargo@v1版本是基于Node.js 12开发的,而GitHub已经宣布Node.js 12的Action会被弃用,所以才会弹出这个警告。另外要注意,actions-rs系列Action已经停止维护了,推荐改用官方的dtolnay/rust-toolchain,或者直接用run步骤调用cargo命令来替代。
内容的提问来源于stack exchange,提问作者MortalFool
相关产品推荐
相关产品推荐

