on: [push]
name: build
jobs:
check:
name: Rust project
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
components: rustfmt, clippy
# `cargo check` command here will use installed `nightly`
# as it is set as an "override" for current directory
- name: Run cargo check
uses: actions-rs/cargo@v1
with:
command: check
Toolchain name to use, ex. stable, nightly, nightly-2019-04-20, or 1.32.0
string
stable
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
default
components
Comma-separated list of the additional components to install, ex. clippy, rustfmt
string
Note: since v1.0.4 version, toolchain input is not marked as required
in order to support toolchain files. See the details below.
Outputs
Installed rustc, cargo and rustup versions can be fetched from the Action outputs:
Name
Description
Example
rustc
Rustc version
1.40.0 (73528e339 2019-12-16)
rustc_hash
Rustc version hash
73528e339
cargo
Cargo version
1.40.0 (bc8e4c8be 2019-11-22)
rustup
rustup version
1.21.1 (7832b2ebe 2019-12-20)
Note: rustc_hash output value can be used with actions/cache Action
to store cache for different Rust versions, as it is unique across different Rust versions and builds (including nightly).
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:
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: stable
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
In case if nightly toolchain is requested and one of the components is missing in
latest nightly release, this Action will attempt the downgrade till it find
the most recent nightly with all components needed. Note that this behavior will work only if the following two conditions apply:
toolchain input is nightly exactly.
At least one component is provided in components input.
Same to the profile input, if installed rustup does not supports “components”,
it will be automatically upgraded by this Action.
The toolchain file
This Action supports toolchain files,
so it is not necessary to use toolchain input anymore.
Input has higher priority, so if you are want to use toolchain file,
you need to remove the input from the workflow file.
If neither toolchain input or rust-toolchain file are provided,
Action execution will fail.
License
This Action is distributed under the terms of the MIT license, see LICENSE for details.
Contribute and support
Any contributions are welcomed!
If you want to report a bug or have a feature request,
check the Contributing guide.
You can also support author by funding the ongoing project work,
see Sponsoring.
rust-toolchainActionThis GitHub Action installs Rust toolchain with rustup help.
It supports additional targets, components and profiles and handles all these small papercuts for you.
Table of Contents
Example workflow
See additional recipes here.
Inputs
toolchainstable,nightly,nightly-2019-04-20, or1.32.0targetx86_64-apple-darwindefaultoverrideprofilerustup set profile {value}before installing the toolchain, ex.minimalcomponentsclippy, rustfmtNote: since
v1.0.4version,toolchaininput is not marked as required in order to support toolchain files. See the details below.Outputs
Installed
rustc,cargoandrustupversions can be fetched from the Action outputs:rustc1.40.0 (73528e339 2019-12-16)rustc_hash73528e339cargo1.40.0 (bc8e4c8be 2019-11-22)rustup1.21.1 (7832b2ebe 2019-12-20)Note:
rustc_hashoutput value can be used with actions/cache Action to store cache for different Rust versions, as it is unique across different Rust versions and builds (includingnightly).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:
This Action will automatically run
rustup self updateifprofileinput is set and the installedrustupversion does not supports them.In order to provide backwards compatibility for
v1version, there is no value forprofileinput set by default, which means that thedefaultprofile is used byrustup(and that includesrust-docs,clippyandrustfmt).You may want to consider using
profile: minimalto 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:
As an extra perk,
rustup >= 1.20.0is able to find the most recentnightlytoolchain with the requested components available; next example is utilizing this feature to install the minimal set ofnightlytoolchain components with therustfmtandclippyextras:In case if
nightlytoolchain is requested and one of the components is missing in latestnightlyrelease, this Action will attempt the downgrade till it find the most recentnightlywith all components needed.Note that this behavior will work only if the following two conditions apply:
toolchaininput isnightlyexactly.componentsinput.Same to the
profileinput, if installedrustupdoes not supports “components”, it will be automatically upgraded by this Action.The toolchain file
This Action supports toolchain files, so it is not necessary to use
toolchaininput anymore.Input has higher priority, so if you are want to use toolchain file, you need to remove the input from the workflow file.
If neither
toolchaininput orrust-toolchainfile are provided, Action execution will fail.License
This Action is distributed under the terms of the MIT license, see LICENSE for details.
Contribute and support
Any contributions are welcomed!
If you want to report a bug or have a feature request, check the Contributing guide.
You can also support author by funding the ongoing project work, see Sponsoring.