4.6 KiB
rust-toolchain
Action
This GitHub Action installs Rust toolchain.
Optionally it can set installed toolchain as a default and as an override for current directory.
Example workflow
on: [push]
name: build
jobs:
check:
name: Rust project
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
# `cargo check` command here will use installed `nightly`
# as it set as an "override" for current directory
- name: Run cargo check
uses: actions-rs/cargo@v1
with:
command: check
Inputs
Name | Required | Description | Type | Default |
---|---|---|---|---|
toolchain |
✓ | Toolchain name to use, ex. stable , nightly , nightly-2019-04-20 , or 1.32.0 |
string | |
target |
Additionally install specified target for this toolchain, ex. x86_64-apple-darwin |
string | ||
default |
Set installed toolchain as a default toolchain | bool | false | |
override |
Set installed toolchain as an override for the current directory | bool | false | |
profile |
Execute rustup set profile {value} before installing the toolchain, ex. minimal |
string | ||
components |
Comma-separated list of the additional components to install, ex. clippy, rustfmt |
string |
Profiles
This Action supports rustup profiles, which are can be used to speed up the workflow execution by installing the minimally required set of components, for example:
- name: Install minimal nightly
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
This Action will automatically run rustup self update
if profile
input is set
and the installed rustup
version does not supports them.
In order to provide backwards compatibility for v1
version,
there is no value for profile
input set by default,
which means that the default
profile is used by rustup
(and that includes rust-docs
, clippy
and rustfmt
).
You may want to consider using profile: minimal
to speed up toolchain installation.
Components
This Action supports rustup components too, and in combination with the profiles input it allows to install only the needed components:
- name: Install minimal stable with clippy and rustfmt
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
components: rustfmt, clippy
As an extra perk, rustup >= 1.20.0
is able to find the most recent nightly
toolchain
with the requested components available; next example is utilizing this feature
to install the minimal set of nightly
toolchain components with the rustfmt
and clippy
extras:
- name: Install minimal nightly with clippy and rustfmt
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
components: rustfmt, clippy
Same to the profile
input, if the installed rustup
does not supports "components",
it will be automatically upgraded by this Action.
Notes
As rustup
is not installed by default for macOS environments
at the moment (2019-09-13), this Action will try its best to install it before any other operations.