23 Commits

Author SHA1 Message Date
6ccb5b2412 Merge pull request #7 from nahsi/fix-path 2022-09-15 22:20:32 +02:00
eeb9aed65a Update Changelog 2022-09-15 22:17:16 +02:00
7d2efc1a78 Fix adding CARGO_HOME to PATH 2022-09-15 11:56:37 +03:00
aea84e9171 Merge pull request #6 from actions-rust-lang/jonasbb/issue5 2022-08-14 17:40:34 +02:00
08010b773d Use sparse registry on nightly
Fixes #5
2022-08-14 15:09:22 +00:00
dcf4d74c21 Update Changelog 2022-07-30 23:57:54 +02:00
7d6ff77cf9 Merge pull request #4 from filips123/add-cache-option
Add an option to disable configuring Rust cache
2022-07-30 23:54:54 +02:00
3ec6dbd408 Add an option to disable configuring Rust cache 2022-07-30 20:01:50 +02:00
137d2d5a3a Set environment variables before running rust-cache 2022-07-29 23:22:43 +02:00
8282e10527 Show rustfmt action in example workflow
Show how the related rustfmt action can be used.
2022-07-27 20:42:53 +02:00
2f56cd1b8a Merge pull request #2 from actions-rust-lang/support-toolchain-file
Add support for toolchain files
2022-07-21 23:33:26 +02:00
08934cd939 Add test for toolchain file support 2022-07-21 21:31:15 +00:00
379d2bfd83 Add support for toolchain files
A toolchain file in the repository root will always take priority.

Closes #1
2022-07-21 21:16:38 +00:00
c17331ebbf Update changelog for v1.1.0 2022-07-19 19:03:54 +00:00
49e54cc50a Update to newer version of caching action 2022-07-19 19:01:40 +00:00
29a2385140 Better and more verbose version printing and cachekey version. 2022-07-19 19:00:36 +00:00
8ba04cb6f2 Install rustup if not available, Linux only
The original code stems from this PR:
https://github.com/dtolnay/rust-toolchain/pull/8
2022-07-19 18:48:19 +00:00
5c0654516c Create dependabot configuration for GitHub Actions 2022-07-19 20:16:04 +02:00
d39b183d8d Enable backtraces for test failures 2022-05-02 20:41:08 +00:00
4018312e96 Enable colored cargo output 2022-05-02 20:32:16 +00:00
9015641f5c Update changelog 2022-04-20 20:27:13 +00:00
014f31d759 Shrinkt action description to make it marketplace compliant 2022-04-20 20:25:35 +00:00
85cc8bd3df Add changelog 2022-04-20 20:15:26 +00:00
5 changed files with 178 additions and 25 deletions

11
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,11 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"

View File

@ -13,9 +13,28 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
rust: [nightly, beta, stable] rust: [
# Test with toolchain file override
"1.50",
"nightly",
"beta",
"stable",
]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
# Test toolchain file support
- name: Write rust-toolchain.toml
run: |
cat <<EOF >>rust-toolchain.toml
[toolchain]
channel = "nightly-2020-07-10"
components = [ "rustfmt", "rustc-dev" ]
targets = [ "wasm32-unknown-unknown", "thumbv2-none-eabi" ]
profile = "minimal"
EOF
shell: bash
if: matrix.rust == '1.50'
- uses: ./ - uses: ./
name: Run actions-rust-lang/setup-rust-toolchain ${{matrix.rust}} name: Run actions-rust-lang/setup-rust-toolchain ${{matrix.rust}}
id: toolchain id: toolchain

73
CHANGELOG.md Normal file
View File

@ -0,0 +1,73 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [1.3.2] - 2022-09-15
### Fixed
* Fix setting `$CARGO_HOME` to a valid path, in case rustup is installed from the internet.
Thanks to @nahsi for providing the fix.
## [1.3.1] - 2022-08-14
### Changed
* Use the sparse-registry on nightly for faster access to the crate registry on nightly.
<https://internals.rust-lang.org/t/call-for-testing-cargo-sparse-registry/16862>
## [1.3.0] - 2022-07-30
### Added
* An option to disable configuring Rust cache.
Thanks to @filips123 for the PR.
## [1.2.1] - 2022-07-29
### Fixed
* Set environment variables before invoking the cache action.
This ensures restoring and saving are using the same cache key.
## [1.2.0] - 2022-07-21
### Added
* Prefer toolchain definitions in `rust-toolchain` or `rust-toolchain.toml` files ([Toolchain File](https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file)).
Other input values are ignored if either file is found.
## [1.1.0] - 2022-07-19
### Added
* Install rustup if not available in the CI environment. (Linux only)
The code is taken from this issue: <https://github.com/dtolnay/rust-toolchain/pull/8>
* Add rustc version output suitable as a cache key.
This is based on <https://github.com/dtolnay/rust-toolchain/pull/20> and <https://github.com/dtolnay/rust-toolchain/pull/17>.
### Changed
* Update to `Swatinem/rust-cache@v2`.
## [1.0.2] - 2022-05-02
### Changed
* Enable colored cargo output.
* Print short backtraces during test failure.
## [1.0.1] - 2022-04-20
### Added
* Release action on marketplace
## [1.0.0] - 2022-04-20
Initial Version

View File

@ -24,17 +24,33 @@ jobs:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: actions-rust-lang/setup-rust-toolchain@v1 - uses: actions-rust-lang/setup-rust-toolchain@v1
- run: cargo test --all-features - 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 ## Inputs
All inputs are optional. All inputs are optional.
If a [toolchain file](https://rust-lang.github.io/rustup/overrides.html#the-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 | | Name | Description | Default |
| ------------ | --------------------------------------------------------------------------------- | ------- | | ------------ | --------------------------------------------------------------------------------- | ------- |
| `toolchain` | Rustup toolchain specifier e.g. `stable`, `nightly`, `1.42.0`. | stable | | `toolchain` | Rustup toolchain specifier e.g. `stable`, `nightly`, `1.42.0`. | stable |
| `target` | Additional target support to install e.g. `wasm32-unknown-unknown` | | | `target` | Additional target support to install e.g. `wasm32-unknown-unknown` | |
| `components` | Comma-separated string of additional components to install e.g. `clippy, rustfmt` | | | `components` | Comma-separated string of additional components to install e.g. `clippy, rustfmt` | |
| `cache` | Automatically configure Rust cache (using `Swatinem/rust-cache`) | true |
## Outputs ## Outputs

View File

@ -1,8 +1,7 @@
name: Setup Rust Toolchain for GitHub CI name: Setup Rust Toolchain for GitHub CI
description: | description: |
Setup specific Rust versions and integrate nicely into the ecosystem. Setup specific Rust versions with caching pre-configured.
The action enabled caching of Rust tools and build artifacts and sets environment variables for faster and more efficient caching. It provides problem matchers for cargo and rustfmt issues.
It also sets up problem matchers showing compilation and formatting issues.
branding: branding:
icon: "play" icon: "play"
@ -23,6 +22,10 @@ inputs:
components: components:
description: "Comma-separated list of components to be additionally installed" description: "Comma-separated list of components to be additionally installed"
required: false required: false
cache:
description: "Automatically configure Rust cache"
required: false
default: "true"
outputs: outputs:
rustc-version: rustc-version:
@ -34,6 +37,9 @@ outputs:
rustup-version: rustup-version:
description: "Version as reported by `rustup --version`" description: "Version as reported by `rustup --version`"
value: ${{steps.versions.outputs.rustup-version}} value: ${{steps.versions.outputs.rustup-version}}
cachekey:
description: A short hash of the rustc version, appropriate for use as a cache key. "20220627a831"
value: ${{steps.versions.outputs.cachekey}}
runs: runs:
using: composite using: composite
@ -48,30 +54,58 @@ runs:
targets: ${{inputs.target}} targets: ${{inputs.target}}
components: ${{inputs.components}} components: ${{inputs.components}}
shell: bash shell: bash
- name: rustup toolchain install ${{inputs.toolchain}} # The environment variables always need to be set before the caching action
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" - name: "Setting Environment Variables"
run: | run: |
echo "CARGO_INCREMENTAL=0" >> $GITHUB_ENV echo "CARGO_INCREMENTAL=0" >> $GITHUB_ENV
echo "CARGO_PROFILE_DEV_DEBUG=0" >> $GITHUB_ENV echo "CARGO_PROFILE_DEV_DEBUG=0" >> $GITHUB_ENV
echo "CARGO_TERM_COLOR=always" >> $GITHUB_ENV
echo "RUST_BACKTRACE=short" >> $GITHUB_ENV
echo "RUSTFLAGS=-D warnings" >> $GITHUB_ENV echo "RUSTFLAGS=-D warnings" >> $GITHUB_ENV
# Enable faster sparse index on nightly
# https://internals.rust-lang.org/t/call-for-testing-cargo-sparse-registry/16862
echo "CARGO_UNSTABLE_SPARSE_REGISTRY=true" >> $GITHUB_ENV
shell: bash shell: bash
- name: "Install Rust Problem Matcher"
run: echo "::add-matcher::${{ github.action_path }}/rust.json"
shell: bash
- name: Install rustup, if needed
run: |
if ! command -v rustup &> /dev/null ; then
curl --proto '=https' --tlsv1.2 --retry 10 --retry-connrefused -fsSL "https://sh.rustup.rs" | sh -s -- --default-toolchain none -y
echo "${CARGO_HOME:-$HOME/.cargo}/bin" >> $GITHUB_PATH
fi
if: runner.os != 'Windows'
shell: bash
- name: rustup toolchain install ${{inputs.toolchain}}
run: |
if [[ -f "rust-toolchain" || -f "rust-toolchain.toml" ]]
then
# Install the toolchain as specified in the file
# Might break at some point: https://github.com/rust-lang/rustup/issues/1397
rustup show
else
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}}
fi
shell: bash
- name: Print installed versions
id: versions
run: |
echo "::set-output name=rustc-version::$(rustc --version)"
rustc --version --verbose
echo "::set-output name=cargo-version::$(cargo --version)"
cargo --version --verbose
echo "::set-output name=rustup-version::$(rustup --version)"
rustup --version
DATE=$(rustc --version --verbose | sed -ne 's/^commit-date: \(20[0-9][0-9]\)-\([01][0-9]\)-\([0-3][0-9]\)$/\1\2\3/p')
HASH=$(rustc --version --verbose | sed -ne 's/^commit-hash: //p')
echo "::set-output name=cachekey::$(echo $DATE$HASH | head -c12)"
shell: bash
- name: "Setup Rust Caching"
if: inputs.cache == 'true'
uses: Swatinem/rust-cache@v2