setup-rust-toolchain/action.yml

78 lines
3.0 KiB
YAML

name: Setup Rust Toolchain for GitHub CI
description: |
Setup specific Rust versions and integrate nicely into the ecosystem.
The action enabled caching of Rust tools and build artifacts and sets environment variables for faster and more efficient caching.
It also sets up problem matchers showing compilation and formatting issues.
branding:
icon: "play"
color: "gray-dark"
# Add option to install directly from rust-toolchain file
# Blocked on rustup support: https://github.com/rust-lang/rustup/issues/2686
#
# The action is heavily inspired by https://github.com/dtolnay/rust-toolchain
inputs:
toolchain:
description: "Rust toolchain specification -- see https://rust-lang.github.io/rustup/concepts/toolchains.html#toolchain-specification"
required: false
default: "stable"
target:
description: "Target triple to install for this toolchain"
required: false
components:
description: "Comma-separated list of components to be additionally installed"
required: false
outputs:
rustc-version:
description: "Version as reported by `rustc --version`"
value: ${{steps.versions.outputs.rustc-version}}
cargo-version:
description: "Version as reported by `cargo --version`"
value: ${{steps.versions.outputs.cargo-version}}
rustup-version:
description: "Version as reported by `rustup --version`"
value: ${{steps.versions.outputs.rustup-version}}
runs:
using: composite
steps:
- id: flags
run: |
: construct rustup command line
echo "::set-output name=targets::$(for t in ${targets//,/ }; do echo -n ' --target' $t; done)"
echo "::set-output name=components::$(for c in ${components//,/ }; do echo -n ' --component' $c; done)"
echo "::set-output name=downgrade::${{inputs.toolchain == 'nightly' && inputs.components && ' --allow-downgrade' || ''}}"
env:
targets: ${{inputs.target}}
components: ${{inputs.components}}
shell: bash
- name: rustup toolchain install ${{inputs.toolchain}}
run: |
rustup toolchain install ${{inputs.toolchain}}${{steps.flags.outputs.targets}}${{steps.flags.outputs.components}} --profile minimal${{steps.flags.outputs.downgrade}} --no-self-update
rustup default ${{inputs.toolchain}}
shell: bash
- name: Print installed versions
id: versions
run: |
echo "::set-output name=rustc-version::$(rustc --version)"
rustc --version
echo "::set-output name=cargo-version::$(cargo --version)"
cargo --version
echo "::set-output name=rustup-version::$(rustup --version)"
rustup --version
shell: bash
- name: "Setup Rust Caching"
uses: Swatinem/rust-cache@v1
- name: "Install Rust Problem Matcher"
run: echo "::add-matcher::${{ github.action_path }}/rust.json"
shell: bash
- name: "Setting Environment Variables"
run: |
echo "CARGO_INCREMENTAL=0" >> $GITHUB_ENV
echo "CARGO_PROFILE_DEV_DEBUG=0" >> $GITHUB_ENV
echo "RUSTFLAGS=-D warnings" >> $GITHUB_ENV
shell: bash