Compare commits

..

59 Commits

Author SHA1 Message Date
Jonas Bushart
9d7e65c320 Update changelog for windows support 2025-04-23 22:46:51 +02:00
Jonas Bushart
9988a3d74b Update the dependency section to mark the new windows rustup support 2025-04-23 22:42:15 +02:00
Jonas Bushart
0ddce9f632 Merge pull request #58 from maennchen/jm/windows-arm 2025-04-23 22:39:32 +02:00
Jonatan Männchen
d9c91b20fd Support rustup installation for Windows 2025-04-23 16:47:51 +02:00
Jonas Bushart
9399c7bb15 Merge pull request #53 from actions-rust-lang/rel-1110 2025-02-24 21:55:37 +01:00
Rob Ede
3c7cfa82dc Merge branch 'main' into rel-1110 2025-02-24 02:35:39 +00:00
Rob Ede
b38f618be2 Merge pull request #51 from enkhjile/main 2025-02-24 02:34:33 +00:00
Rob Ede
6cbea1a794 chore: prepare release 1.11.0 2025-02-24 02:19:52 +00:00
Rob Ede
6f9a9da9f9 Merge branch 'main' into main 2025-02-24 02:15:25 +00:00
Rob Ede
2ad14f9ee2 Merge pull request #52 from skanehira/main 2025-02-24 02:09:24 +00:00
Enkhjil Enkhbaatar
30081c4da5 fix: add cache-bin input with true as default value 2025-02-11 12:01:30 +09:00
skanehira
f8efd60d2d feat: add shared-cache-key to inputs 2025-02-08 01:24:48 +09:00
Jonas Bushart
97db979bf8 Specify dependencies in README 2024-10-21 23:54:51 +02:00
Jonas Bushart
11df97af8e Update the rustfmt problem matcher
https://github.com/rust-lang/rustfmt/pull/5971
https://github.com/actions-rust-lang/rustfmt/issues/5
2024-10-01 23:06:20 +02:00
Jonas Bushart
4d1965c914 Add override input parameter that controls the rustup override behavior 2024-09-22 16:04:02 +02:00
Jonas Bushart
b31b1317f2 Allow installing multiple Rust toolchains at once. 2024-09-22 15:28:43 +02:00
Jonas Bushart
9f99923fad Add pre-commit for basic checks 2024-09-20 00:46:09 +02:00
Jonas Bushart
86a2ce6673 Make toolchain install more robust 2024-09-20 00:39:06 +02:00
Jonas Bushart
eb4a655afd Document new keys and add changelog 2024-09-20 00:27:10 +02:00
Jonas Bushart
a90048dfdd Merge pull request #41 from iainlane/iainlane/propagate-cache-key 2024-09-20 00:23:43 +02:00
Jonas Bushart
597574aacb Update key name in README 2024-09-20 00:23:09 +02:00
Jonas Bushart
634cedf365 Merge pull request #44 from pranc1ngpegasus/feat/able-to-cache-additional-directories 2024-09-20 00:09:58 +02:00
Fukaya Temma
5d6934e965 Able to cache additional directories 2024-08-18 01:34:59 +09:00
Iain Lane
b01657d9bb Add support for adding to cache key
When using this action in multiple matrix jobs in the same workflow, the
generated cache key is the same for all of them, because they all get
the same job ID. This means that all apart from the first job are unable
to save the cache, and subsequent runs might restore the wrong cache.

The `Swatinem/rust-cache` action which we use for caching has a `key`
input which it puts in its cache key. (It doesn't override the key, just
adds to it.) Providing this as an input here will allow us to generate a
unique cache key for each job in the matrix.
2024-07-13 07:31:43 +01:00
Jonas Bushart
1fbea72663 Merge pull request #40 from actions-rust-lang/prepare-release 2024-06-08 12:49:07 +02:00
Jonas Bushart
46dca5d120 Add changelog entry 2024-06-08 12:40:20 +02:00
Jonas Bushart
1734e14b0b Switch default of cache-on-failure to true 2024-06-08 12:33:50 +02:00
Jonas Bushart
74e1b40e68 Merge pull request #39 from samuelhnrq/main 2024-06-05 20:01:48 +02:00
Samuel Henrique
d60b90debe feat: adds cache-on-failure propagation 2024-05-25 08:26:47 +00:00
Jonas Bushart
b113a30d27 Merge pull request #34 from actions-rust-lang/rel-180 2024-01-14 00:29:32 +01:00
Rob Ede
039765bd18 chore: prepare release 1.8.0 2024-01-13 17:45:49 +00:00
Rob Ede
84e65ce315 Merge pull request #32 from gruebel/add-workspaces 2024-01-13 17:40:39 +00:00
Rob Ede
6f719a240e Merge branch 'main' into add-workspaces 2024-01-13 17:36:40 +00:00
Rob Ede
15d0afaad9 ci: fix cache test 2024-01-13 17:36:31 +00:00
Rob Ede
922cc935eb ci: add cache-workspaces test 2024-01-13 17:25:41 +00:00
Rob Ede
bcda41b18d Merge pull request #33 from fprasx/fprasx/fix-toolchain-overrides 2024-01-13 16:07:27 +00:00
Rob Ede
ba41ca6f71 ci: clearer test names 2024-01-13 16:03:46 +00:00
Rob Ede
aa089182f2 ci: fix conditional 2024-01-13 15:57:48 +00:00
Rob Ede
c6086ae6e5 test: add toolchain file override test 2024-01-13 15:54:38 +00:00
Felix Prasanna
d473183fe9 use rustup override set to select toolchain
Using rustup override set will override a local rust-toolchain.toml file
while rustup default will not.
2024-01-12 17:14:34 -05:00
gruebel
f2e9ed58bd add workspaces input field to support non-root projects 2024-01-12 18:41:01 +01:00
Jonas Bushart
d5fcac478a Merge pull request #30 from actions-rust-lang/prep-1.7.0 2024-01-11 23:57:44 +01:00
Rob Ede
c4ac4d95de Prepare 1.7.0 release 2024-01-11 03:20:22 +00:00
Rob Ede
154a347b2a Merge pull request #29 from actions-rust-lang/upd-toolchain-nightly 2024-01-11 03:16:11 +00:00
Rob Ede
af702488e5 ci: update checked rust-toolchain version 2024-01-11 03:12:29 +00:00
Rob Ede
bb3f6a170e Merge pull request #26 from Twey/allow-overriding-toolchain-file 2024-01-11 03:00:13 +00:00
Rob Ede
99ab88ad00 Merge branch 'main' into allow-overriding-toolchain-file 2024-01-11 02:56:08 +00:00
Rob Ede
962ed5edf0 ci: add indicate toolchain file in job name 2024-01-11 02:20:44 +00:00
Jonas Bushart
c7e1de2846 Update CHANGELOG.md 2023-12-04 00:16:34 +01:00
Jonas Bushart
24c9dd087b Merge pull request #24 from obi1kenobi/patch-1 2023-12-04 00:15:38 +01:00
Jonas Bushart
74a4154991 Merge pull request #27 from oxideai/feature/config-matcher 2023-12-04 00:13:10 +01:00
dcvz
84ba0c9d1b Update README 2023-11-30 11:45:35 +01:00
dcvz
51173b3da4 feature(matcher): allow disabling problem matcher 2023-11-30 11:42:45 +01:00
James ‘Twey’ Kay
6ed6429951 Use the empty string to trigger toolchain file check instead of an old version 2023-11-01 09:44:05 +00:00
James ‘Twey’ Kay
5ea736b97f Allow overriding the toolchain file 2023-10-31 12:58:53 +00:00
Predrag Gruevski
33678a48c0 Add docs for the cachekey output to the README
It seems like it's being output, just wasn't documented: https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/action.yml#L144
2023-10-17 22:01:06 -04:00
Jonas Bushart
317ed62323 Update example workflow in readme 2023-10-03 18:55:16 +02:00
Jonas Bushart
8cb8f77172 Merge pull request #23 from actions-rust-lang/dependabot/github_actions/actions/checkout-4
Bump actions/checkout from 3 to 4
2023-10-01 10:55:40 +02:00
dependabot[bot]
1f541c5b05 Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 07:14:31 +00:00
10 changed files with 285 additions and 72 deletions

View File

@@ -15,7 +15,7 @@ jobs:
permissions:
contents: write
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Get version from tag
id: tag_name
run: |

View File

@@ -1,66 +1,106 @@
name: CI
on:
push:
push: { branches: [main] }
pull_request:
schedule: [cron: "40 1 * * *"]
jobs:
install:
name: Rust ${{matrix.rust}} ${{matrix.os}}
name: Rust ${{matrix.rust || '(default)'}} (toolchain-file=${{matrix.write-toolchain-file}}) (${{matrix.os}})
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
max-parallel: 5
matrix:
rust: [
# Test with toolchain file override
"1.60",
os:
- ubuntu-latest
- windows-latest
- macos-latest
write-toolchain-file:
- false
- true
rust:
# use stable toolchain as default
- null
# Test that the sparse registry check works.
# 1.66 and 1.67 don't support stable sparse registry.
"1.66",
"nightly",
"beta",
"stable",
]
os: [
"ubuntu-latest",
"windows-latest",
"macos-latest",
]
- "1.66"
- "nightly"
- "beta"
- "stable"
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
# Test toolchain file support
- name: Write rust-toolchain.toml
if: matrix.write-toolchain-file
shell: bash
run: |
cat <<EOF >>rust-toolchain.toml
[toolchain]
channel = "nightly-2022-09-10"
channel = "nightly-2024-01-10"
components = [ "rustfmt", "rustc-dev" ]
targets = [ "wasm32-unknown-unknown", "thumbv7m-none-eabi" ]
profile = "minimal"
EOF
shell: bash
if: matrix.rust == '1.60'
- uses: ./
name: Run actions-rust-lang/setup-rust-toolchain ${{matrix.rust}}
id: toolchain
- id: toolchain
name: Run actions-rust-lang/setup-rust-toolchain ${{matrix.rust || 'on toolchain file'}}
uses: ./
with:
toolchain: ${{matrix.rust}}
components: clippy
- name: Check ${{'${{steps.toolchain.outputs.rustc-version}}'}}
run: echo '${{steps.toolchain.outputs.rustc-version}}'
- name: Check ${{'${{steps.toolchain.outputs.cargo-version}}'}}
run: echo '${{steps.toolchain.outputs.cargo-version}}'
- name: Check ${{'${{steps.toolchain.outputs.rustup-version}}'}}
run: echo '${{steps.toolchain.outputs.rustup-version}}'
- run: rustc --version && cargo --version
- name: Check lack of toolchain input or file results in stable
if: matrix.write-toolchain-file == false && matrix.rust == null
shell: bash
run: |-
rustcv="$(rustc --version)"
[[ "$rustcv" != *"nightly"* && "$rustcv" != *"beta"* ]]
- name: Check toolchain file is being overridden
if: matrix.write-toolchain-file
shell: bash
run: |-
rustcv="$(rustc --version)"
[[ ! ( "$rustcv" == *"nightly"* && "$rustcv" == *"2024-01-10"* ) ]]
- shell: bash
run: rustc --version && cargo --version
# Test with creating a small project
- run: cargo init . --bin --name ci
# Add tiny empty crate.
# This checks that registry access works.
- run: cargo add serde_as
- run: cargo clippy
cache:
name: Cache
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: ./
with:
components: clippy
cache: true
cache-workspaces: |-
./test-workspace
- run: cargo clippy --manifest-path=./test-workspace/Cargo.toml

18
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,18 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: check-case-conflict
- id: check-executables-have-shebangs
- id: check-merge-conflict
- id: check-json
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
args: [--markdown-linebreak-ext=md]
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.29.2
hooks:
- id: check-dependabot
- id: check-github-actions
- id: check-github-workflows

View File

@@ -7,6 +7,53 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [1.12.0] - 2025-04-23
* Add support for installing rustup on Windows (#58 by @maennchen)
This adds support for using Rust on the GitHub provided Windows ARM runners.
## [1.11.0] - 2025-02-24
* Add new parameter `cache-bin` that is propagated to `Swatinem/rust-cache` as `cache-bin` (#51 by @enkhjile)
* Add new parameter `cache-shared-key` that is propagated to `Swatinem/rust-cache` as `shared-key` (#52 by @skanehira)
## [1.10.1] - 2024-10-01
* Fix problem matcher for rustfmt output.
The format has changed since https://github.com/rust-lang/rustfmt/pull/5971 and now follows the form "filename:line".
Thanks to @0xcypher02 for pointing out the problem.
## [1.10.0] - 2024-09-23
* Add new parameter `cache-directories` that is propagated to `Swatinem/rust-cache` (#44 by @pranc1ngpegasus)
* Add new parameter `cache-key` that is propagated to `Swatinem/rust-cache` as `key` (#41 by @iainlane)
* Make rustup toolchain installation more robust in light of planned changes https://github.com/rust-lang/rustup/issues/3635 and https://github.com/rust-lang/rustup/pull/3985
* Allow installing multiple Rust toolchains by specifying multiple versions in the `toolchain` input parameter.
* Configure the `rustup override` behavior via the new `override` input. (#38)
## [1.9.0] - 2024-06-08
* Add extra argument `cache-on-failure` and forward it to `Swatinem/rust-cache`. (#39 by @samuelhnrq)
Set the default the value to true.
This will result in more caching than previously.
This helps when large dependencies are compiled only for testing to fail.
## [1.8.0] - 2024-01-13
* Allow specifying subdirectories for cache.
* Fix toolchain file overriding.
## [1.7.0] - 2024-01-11
* Allow overriding the toolchain file with explicit `toolchain` input. (#26)
## [1.6.0] - 2023-12-04
### Added
* Allow disabling problem matchers (#27)
This can be useful when having a matrix of jobs, that produce the same errors.
## [1.5.0] - 2023-05-29
### Added

View File

@@ -21,16 +21,16 @@ jobs:
name: cargo test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- 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
- uses: actions/checkout@v4
# Ensure rustfmt is installed and setup problem matcher
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
@@ -42,17 +42,29 @@ jobs:
## Inputs
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, its `toolchain` value takes precedence.
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 and no `toolchain` value is provided, all items specified in the toolchain file will be installed.
If a `toolchain` value is provided, the toolchain file will be ignored.
If no `toolchain` value or toolchain file is present, it will default to `stable`.
First, all items specified in the toolchain file are installed.
Afterward, the `components` and `target` specified via inputs are installed in addition to the items from the toolchain file.
| 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 |
| `rustflags` | Set the value of `RUSTFLAGS` (set to empty string to avoid overwriting existing flags) | "-D warnings" |
| Name | Description | Default |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------- |
| `toolchain` | Comma-separated list of Rustup toolchain specifier e.g. `stable`, `nightly`, `1.42.0`. The last version is the default. | 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 |
| `cache-directories` | Propagates the value to [`Swatinem/rust-cache`] | |
| `cache-workspaces` | Propagates the value to [`Swatinem/rust-cache`] | |
| `cache-on-failure` | Propagates the value to [`Swatinem/rust-cache`] | true |
| `cache-key` | Propagates the value to [`Swatinem/rust-cache`] as `key` | |
| `cache-shared-key` | Propagates the value to [`Swatinem/rust-cache`] as `shared-key` | |
| `cache-bin` | Propagates the value to [`Swatinem/rust-cache`] as `cache-bin` | true |
| `matcher` | Enable problem matcher to surface build messages and formatting issues | true |
| `rustflags` | Set the value of `RUSTFLAGS` (set to empty string to avoid overwriting existing flags) | "-D warnings" |
| `override` | Setup the last installed toolchain as the default via `rustup override` | true |
[`Swatinem/rust-cache`]: https://github.com/Swatinem/rust-cache
### RUSTFLAGS
@@ -71,11 +83,22 @@ You can read more rustflags, and their load order, in the [Cargo reference].
## 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` |
| 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` |
| `cachekey` | A short hash of the installed rustc version |
## Dependencies
The action works best on the GitHub-hosted runners, but can work on self-hosted ones too, provided the necessary dependencies are available.
PRs to add support for more environments are welcome.
* bash 5
* brew (macOS only)
* rustup or curl
* using other node actions
## License

View File

@@ -13,9 +13,8 @@ branding:
# 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"
description: "Comma-separated list of Rust toolchain specifications. Last version becomes the default. -- 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
@@ -26,10 +25,38 @@ inputs:
description: "Automatically configure Rust cache"
required: false
default: "true"
cache-workspaces:
description: "Paths to multiple Cargo workspaces and their target directories, separated by newlines."
required: false
cache-directories:
description: "Additional non workspace directories to be cached, separated by newlines."
required: false
cache-on-failure:
description: "Also cache on workflow failures"
default: "true"
required: false
cache-key:
description: "An additional cache key that is added alongside the automatic `job`-based cache key and can be used to further differentiate jobs."
required: false
cache-shared-key:
description: "A cache key that is used instead of the automatic `job`-based key, and is stable over multiple jobs."
required: false
cache-bin:
description: "Determines whether to cache ${CARGO_HOME}/bin."
required: false
default: "true"
matcher:
description: "Enable the Rust problem matcher"
required: false
default: "true"
rustflags:
description: "set RUSTFLAGS environment variable, set to empty string to avoid overwriting build.rustflags"
required: false
default: "-D warnings"
override:
description: "Setup the last installed toolchain as the default via `rustup override`"
required: false
default: "true"
outputs:
rustc-version:
@@ -56,17 +83,21 @@ runs:
shell: bash
- id: flags
run: |
: construct rustup command line
echo "targets=$(for t in ${targets//,/ }; do echo -n ' --target' $t; done)" >> $GITHUB_OUTPUT
echo "components=$(for c in ${components//,/ }; do echo -n ' --component' $c; done)" >> $GITHUB_OUTPUT
echo "downgrade=${{inputs.toolchain == 'nightly' && inputs.components && ' --allow-downgrade' || ''}}" >> $GITHUB_OUTPUT
env:
targets: ${{inputs.target}}
components: ${{inputs.components}}
shell: bash
run: |
: construct rustup command line
echo "targets=$(for t in ${targets//,/ }; do echo -n ' --target' $t; done)" >> $GITHUB_OUTPUT
echo "components=$(for c in ${components//,/ }; do echo -n ' --component' $c; done)" >> $GITHUB_OUTPUT
echo "downgrade=${{contains(inputs.toolchain, 'nightly') && inputs.components && ' --allow-downgrade' || ''}}" >> $GITHUB_OUTPUT
# The environment variables always need to be set before the caching action
- name: "Setting Environment Variables"
- name: Setting Environment Variables
env:
NEW_RUSTFLAGS: ${{inputs.rustflags}}
shell: bash
run: |
if [[ ! -v CARGO_INCREMENTAL ]]; then
echo "CARGO_INCREMENTAL=0" >> $GITHUB_ENV
@@ -92,28 +123,43 @@ runs:
if [[ ! -v CARGO_REGISTRIES_CRATES_IO_PROTOCOL ]]; then
echo "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" >> $GITHUB_ENV
fi
- name: Install Rust Problem Matcher
if: inputs.matcher == 'true'
shell: bash
env:
NEW_RUSTFLAGS: ${{inputs.rustflags}}
- name: "Install Rust Problem Matcher"
run: echo "::add-matcher::${{ github.action_path }}/rust.json"
shell: bash
- name: Install rustup, if needed
shell: bash
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
# Resolve the correct CARGO_HOME path depending on OS
if [[ "$RUNNER_OS" == "Windows" ]]; then
echo "${CARGO_HOME:-$USERPROFILE/.cargo}/bin" | sed 's|/|\\|g' >> $GITHUB_PATH
else
echo "${CARGO_HOME:-$HOME/.cargo}/bin" >> $GITHUB_PATH
fi
fi
if: runner.os != 'Windows'
env:
RUNNER_OS: "${{ runner.os }}"
- name: rustup toolchain install ${{inputs.toolchain || 'stable'}}
env:
toolchain: ${{inputs.toolchain}}
targets: ${{inputs.target}}
components: ${{inputs.components}}
override: ${{inputs.override}}
shell: bash
- name: rustup toolchain install ${{inputs.toolchain}}
run: |
if [[ -f "rust-toolchain" || -f "rust-toolchain.toml" ]]
if [[ -z "$toolchain" && ( -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
# rustup show is the old way that implicitly installed a toolchain
# rustup toolchain install is the new explicit way
# https://github.com/rust-lang/rustup/issues/3635#issuecomment-2343511297
rustup show active-toolchain || rustup toolchain install
if [[ -n $components ]]; then
rustup component add ${components//,/ }
fi
@@ -121,16 +167,21 @@ runs:
rustup target add ${targets//,/ }
fi
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}}
if [[ -z "$toolchain" ]]
then
toolchain=stable
fi
rustup toolchain install ${toolchain//,/ } ${{steps.flags.outputs.targets}}${{steps.flags.outputs.components}} --profile minimal${{steps.flags.outputs.downgrade}} --no-self-update
# Take the last element from the list
if [[ "$override" == "true" ]]
then
rustup override set ${toolchain//*,/ }
fi
fi
env:
targets: ${{inputs.target}}
components: ${{inputs.components}}
shell: bash
- name: Print installed versions
id: versions
- id: versions
name: Print installed versions
shell: bash
run: |
echo "rustc-version=$(rustc --version)" >> $GITHUB_OUTPUT
rustc --version --verbose
@@ -142,9 +193,9 @@ runs:
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 "cachekey=$(echo $DATE$HASH | head -c12)" >> $GITHUB_OUTPUT
shell: bash
- name: "Downgrade registry access protocol when needed"
- name: Downgrade registry access protocol when needed
shell: bash
run: |
# Not all versions support setting CARGO_REGISTRIES_CRATES_IO_PROTOCOL
# On versions 1.66, 1.67, and 1.68.0-nightly the value "sparse" is still unstable.
@@ -154,8 +205,14 @@ runs:
echo "Downgrade cargo registry protocol to git"
echo "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=git" >> $GITHUB_ENV
fi
shell: bash
- name: "Setup Rust Caching"
- name: Setup Rust Caching
if: inputs.cache == 'true'
uses: Swatinem/rust-cache@v2
with:
workspaces: ${{inputs.cache-workspaces}}
cache-directories: ${{inputs.cache-directories}}
cache-on-failure: ${{inputs.cache-on-failure}}
cache-bin: ${{inputs.cache-bin}}
key: ${{inputs.cache-key}}
shared-key: ${{inputs.cache-shared-key}}

View File

@@ -5,7 +5,7 @@
"severity": "warning",
"pattern": [
{
"regexp": "^(Diff in (.+)) at line (\\d+):$",
"regexp": "^(Diff in (.+))(?: at line |:)(\\d+):$",
"message": 1,
"file": 2,
"line": 3

16
test-workspace/Cargo.lock generated Normal file
View File

@@ -0,0 +1,16 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "ci"
version = "0.1.0"
dependencies = [
"serde_as",
]
[[package]]
name = "serde_as"
version = "0.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ee4afe4c5c3b69699c4267ae42b838e911466d7ca0005046adc93ac95bb16dd"

View File

@@ -0,0 +1,9 @@
[package]
name = "ci"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
serde_as = "0.0.1"

View File

@@ -0,0 +1,3 @@
fn main() {
println!("Hello, world!");
}