Setup a specific Rust toolchain with extra features like problem matchers
Find a file
Jonas Bushart f010a58728 Always downgrade the registry protocol to supported versions
Not all version support the new sparse protocol. While old versions
ignore the value, 1.66 and other fail due to unstable features.

If such a version is detected, always downgrade to the git protocol.

This fixes running the action twice with different toolchains. Even if
the first install uses something which supports "sparse", the second run
can still downgrade it to "git".

Closes #12
2023-02-21 21:02:41 +00:00
.github Maybe fix rustup warning 2023-02-15 19:06:41 +01:00
action.yml Always downgrade the registry protocol to supported versions 2023-02-21 21:02:41 +00:00
CHANGELOG.md Tweak sparse registry version regex and command not found 2023-02-15 18:49:49 +01:00
LICENSE Initial commit 2022-04-17 21:06:51 +02:00
README.md Add an option to disable configuring Rust cache 2022-07-30 20:01:50 +02:00
rust.json Create rust.json 2022-04-17 21:11:26 +02:00

Install Rust Toolchain

This GitHub Action installs a Rust toolchain using rustup. It further integrates into the ecosystem. Caching for Rust tools and build artifacts is enabled. Environment variables are set to optimize the cache hits. Problem Matchers are provided for build messages (cargo, clippy) and formatting (rustfmt).

The action is heavily inspired by dtolnay's https://github.com/dtolnay/rust-toolchain and extends it with further features.

Example workflow

name: "Test Suite"
on:
  push:
  pull_request:

jobs:
  test:
    name: cargo test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rust-lang/setup-rust-toolchain@v1
      - run: cargo test --all-features
 
  # Check formatting with rustfmt
  formatting:
    name: cargo fmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      # Ensure rustfmt is installed and setup problem matcher
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          components: rustfmt
      - name: Rustfmt Check
        uses: actions-rust-lang/rustfmt@v1

Inputs

All inputs are optional. If a toolchain file (i.e., rust-toolchain or rust-toolchain.toml) is found in the root of the repository, it takes precedence. All input values are ignored if a toolchain file exists.

Name Description Default
toolchain Rustup toolchain specifier e.g. stable, nightly, 1.42.0. stable
target Additional target support to install e.g. wasm32-unknown-unknown
components Comma-separated string of additional components to install e.g. clippy, rustfmt
cache Automatically configure Rust cache (using Swatinem/rust-cache) true

Outputs

Name Description
rustc-version Version as reported by rustc --version
cargo-version Version as reported by cargo --version
rustup-version Version as reported by rustup --version

License

The scripts and documentation in this project are released under the MIT License.