🛠️ GitHub Action for rustup commands
Go to file
Douglas Campos 1aa194cceb add support for multiple targets 2020-03-13 23:57:00 +00:00
.githooks Allow to override toolchain from rust-toolchain file (#35) 2020-01-13 16:31:26 +03:00
.github Release v1.0.5 2020-01-26 19:20:01 +03:00
__tests__ Dont prioritze rust-toolchain file over input variable (#45) 2020-01-17 15:21:07 +03:00
dist add support for multiple targets 2020-03-13 23:57:00 +00:00
src add support for multiple targets 2020-03-13 23:57:00 +00:00
types/mock-env Allow to override toolchain from rust-toolchain file (#35) 2020-01-13 16:31:26 +03:00
.editorconfig Release v1.0.0 2019-09-15 12:24:13 +03:00
.gitignore Allow to override toolchain from rust-toolchain file (#35) 2020-01-13 16:31:26 +03:00
.npmrc Profiles and components support 2019-10-19 13:28:57 +03:00
CHANGELOG.md Release v1.0.5 2020-01-26 19:20:01 +03:00
LICENSE Initial version 2019-09-12 16:44:29 +03:00
README.md add support for multiple targets 2020-03-13 23:57:00 +00:00
action.yml Release v1.0.5 2020-01-26 19:20:01 +03:00
jest.config.js Initial version 2019-09-12 16:44:29 +03:00
package-lock.json Release v1.0.5 2020-01-26 19:20:01 +03:00
package.json Release v1.0.5 2020-01-26 19:20:01 +03:00
tsconfig.json Initial version 2019-09-12 16:44:29 +03:00

README.md

rust-toolchain Action

MIT licensed Gitter

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@v2
      - 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

See additional recipes here.

Inputs

Name Required Description Type Default
toolchain Toolchain name to use, ex. stable, nightly, nightly-2019-04-20, or 1.32.0 string
targets Additionally install specified targets 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

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:

- 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: 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

Same to the profile input, if the 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.

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.