42 Commits
v1.0 ... v1.4.4

Author SHA1 Message Date
ac6bb38f31 Merge pull request #15 from actions-rust-lang/fix-problem-matcher 2023-03-18 00:30:54 +01:00
12a4c2d9dc Add new problem matcher that is aware of color codes
The action runner currently fails to strip color codes from the output.
This means that many matchers currectly do not work.

https://github.com/actions/runner/issues/2341
https://github.com/actions/runner/pull/2430

The new matcher is copied from kaj/rsass which is MIT licensed.

3e5d6c0600/.github/workflows/rust-problem-matcher.json
2023-03-18 00:18:20 +01:00
3b557ff24c Update rust.json
The regex for the problem matcher is invalid, since the `-` creates a range. But the range is invalid, since it cannot start with `\s`.
2023-03-18 00:09:26 +01:00
64fef3b541 Merge pull request #13 from actions-rust-lang/double-run 2023-02-21 22:23:42 +01:00
cea2ca57ed Add changelog entry 2023-02-21 21:15:17 +00:00
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
9fa7c33ef0 Merge pull request #11 from actions-rust-lang/tweak-regex 2023-02-15 19:09:34 +01:00
5f4f30a995 Maybe fix rustup warning
warning: Force-skipping unavailable component 'rust-std-thumbv2-none-eabi'
2023-02-15 19:06:41 +01:00
2d7b97c05c Tweak sparse registry version regex and command not found
These issues are reported again rust-toolchain from which the code is
inspired.

https://github.com/dtolnay/rust-toolchain/issues/71

https://github.com/dtolnay/rust-toolchain/pull/69#pullrequestreview-1299712112
2023-02-15 18:49:49 +01:00
c7c759a5c9 New version with macOS fix 2023-02-13 23:47:49 +01:00
ba68a52e42 Merge pull request #10 from actions-rust-lang/issue-9 2023-02-13 23:43:33 +01:00
40e33d4912 Install newer bash on macOS
The code snippets are written with bash newer than 2014 in mind. This
works fine on Linux and Windows, but not macOS.
2023-02-13 23:28:57 +01:00
8ba1b441e5 Run CI on more platforms 2023-02-13 23:28:43 +01:00
51b4f8316a Bump version to 1.4.0 2023-02-13 21:09:16 +01:00
4605df10a0 Merge pull request #8 from actions-rust-lang/sparse-registry 2023-02-13 21:08:28 +01:00
eac5ebb2ae Fix: Use acceptable crate name (lowercase) 2023-02-13 21:05:26 +01:00
aee7133b58 Use newer nightly with "cargo add" support 2023-02-13 21:02:26 +01:00
2ee353b897 Enable sparse registry access using the stable configuration
Exclude versions 1.66 and 1.67, which don't support stable sparse registry.
2023-02-13 21:00:11 +01:00
045ad9ff3f Only set env vars if they are unset. 2023-02-13 20:58:51 +01:00
dfa8744db3 Do not enable sparse registry on stable 2023-01-31 23:15:57 +01:00
2941fbfa4a Use the correct variable to enable sparse registry access 2023-01-31 13:10:41 +01:00
bc88fd0b3e Enable sparse registry access after stabilization
https://github.com/rust-lang/cargo/pull/11224
https://github.com/dtolnay/rust-toolchain/pull/54
2023-01-21 18:18:27 +01:00
685abf8306 Change some missed set-output commands to GITHUB_OUTPUT 2022-10-15 15:48:55 +02:00
b71469df8b Switch from set-output to $GITHUB_OUTPUT
https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
2022-10-13 21:01:25 +02:00
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
7 changed files with 296 additions and 34 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

@ -19,7 +19,7 @@ jobs:
- name: Get version from tag
id: tag_name
run: |
echo ::set-output name=current_version::${GITHUB_REF#refs/tags/}
echo "current_version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
shell: bash
- name: Create and push tags
run: |

View File

@ -8,14 +8,41 @@ on:
jobs:
install:
name: Rust ${{matrix.rust}}
runs-on: ubuntu-latest
name: Rust ${{matrix.rust}} ${{matrix.os}}
runs-on: ${{matrix.os}}
strategy:
fail-fast: false
matrix:
rust: [nightly, beta, stable]
rust: [
# Test with toolchain file override
"1.60",
# 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",
]
steps:
- uses: actions/checkout@v3
# Test toolchain file support
- name: Write rust-toolchain.toml
run: |
cat <<EOF >>rust-toolchain.toml
[toolchain]
channel = "nightly-2022-09-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
@ -29,3 +56,10 @@ jobs:
run: echo '${{steps.toolchain.outputs.rustup-version}}'
- run: rustc --version && cargo --version
shell: bash
# 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 check

View File

@ -7,6 +7,139 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [1.4.4] - 2023-03-18
### Fixed
* Use color aware problem matcher.
The problem matcher currently runs against the colored terminal output ([Bug 1](https://github.com/actions/runner/issues/2341), [Bug 2](https://github.com/actions/runner/pull/2430)).
The previous matcher was not aware of ANSII color codes and did not work.
## [1.4.3] - 2023-02-21
### Fixed
* Executing the action twice for different toolchains now no longer fails around unstable features #12.
If multiple toolchains are installed, the "CARGO_REGISTRIES_CRATES_IO_PROTOCOL" can be downgraded to "git" if any of the installed toolchains require it.
## [1.4.2] - 2023-02-15
### Fixed
* Tweak sparse registry version regex to better work with 1.68 nightly versions.
* Fix command not found issue
## [1.4.1] - 2023-02-13
### Fixed
* Fixed running on macOS #9 #10
The macOS images have an ancient version of bash, but the action relies on "newer" features than 2014.
We install bash via brew (already pre-installed) to have a new enough version.
The CI is extended to also run on Windows and macOS to catch such issues earlier in the future.
Thanks to @GeorgeHahn for reporting the issue.
## [1.4.0] - 2023-02-13
### Changed
* Only set environment variables, if they are not set before.
This allows setting environment variables before using this action and keeping their values.
* Enable stable sparse registry, except on versions 1.66 and 1.67 where this leads to errors.
## [1.3.7] - 2023-01-31
### Fixed
* Disable the stable access to the sparse registry.
Setting the value causes problem on version before stabilization, e.g., 1.67.
For example, "cargo add" fails.
## [1.3.6] - 2023-01-31
### Fixed
* The the correct environment variable to enable the sparse registry access.
The pull request originally had the wrong value, without `CARGO_` prefix.
## [1.3.5] - 2023-01-21
### Changed
* Use the newly stabilized setting to enable sparse registry access.
This speeds up access to the crate registry and is in addition to the unstable nightly env var.
<https://github.com/rust-lang/cargo/pull/11224>
## [1.3.4] - 2022-10-15
### Changed
* The last version did not fix all "set-output" commands
## [1.3.3] - 2022-10-13
### Changed
* Switch from set-output to $GITHUB_OUTPUT to avoid warning
https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
## [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

View File

@ -24,17 +24,33 @@ jobs:
- 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](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 |
| ------------ | --------------------------------------------------------------------------------- | ------- |
| `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

View File

@ -22,6 +22,10 @@ inputs:
components:
description: "Comma-separated list of components to be additionally installed"
required: false
cache:
description: "Automatically configure Rust cache"
required: false
default: "true"
outputs:
rustc-version:
@ -33,46 +37,110 @@ outputs:
rustup-version:
description: "Version as reported by `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:
using: composite
steps:
# The later code uses "newer" bash features, which are not available in the ancient bash 3 (from 2014) of macOS
- name: Unbork mac
if: runner.os == 'macOS'
run: |
brew install bash
shell: bash
- 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' || ''}}"
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
- name: rustup toolchain install ${{inputs.toolchain}}
# The environment variables always need to be set before the caching action
- name: "Setting Environment Variables"
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}}
if [[ ! -v CARGO_INCREMENTAL ]]; then
echo "CARGO_INCREMENTAL=0" >> $GITHUB_ENV
fi
if [[ ! -v CARGO_PROFILE_DEV_DEBUG ]]; then
echo "CARGO_PROFILE_DEV_DEBUG=0" >> $GITHUB_ENV
fi
if [[ ! -v CARGO_TERM_COLOR ]]; then
echo "CARGO_TERM_COLOR=always" >> $GITHUB_ENV
fi
if [[ ! -v RUST_BACKTRACE ]]; then
echo "RUST_BACKTRACE=short" >> $GITHUB_ENV
fi
if [[ ! -v RUSTFLAGS ]]; then
echo "RUSTFLAGS=-D warnings" >> $GITHUB_ENV
fi
# Enable faster sparse index on nightly
# The value is ignored on stable and causes no problems
# https://internals.rust-lang.org/t/call-for-testing-cargo-sparse-registry/16862
if [[ ! -v CARGO_UNSTABLE_SPARSE_REGISTRY ]]; then
echo "CARGO_UNSTABLE_SPARSE_REGISTRY=true" >> $GITHUB_ENV
fi
if [[ ! -v CARGO_REGISTRIES_CRATES_IO_PROTOCOL ]]; then
echo "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" >> $GITHUB_ENV
fi
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: Install rustup, if needed
run: |
echo "CARGO_INCREMENTAL=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
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 "rustc-version=$(rustc --version)" >> $GITHUB_OUTPUT
rustc --version --verbose
echo "cargo-version=$(cargo --version)" >> $GITHUB_OUTPUT
cargo --version --verbose
echo "rustup-version=$(rustup --version)" >> $GITHUB_OUTPUT
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 "cachekey=$(echo $DATE$HASH | head -c12)" >> $GITHUB_OUTPUT
shell: bash
- name: "Downgrade registry access protocol when needed"
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.
# https://github.com/dtolnay/rust-toolchain/pull/69#discussion_r1107268108
# If we detect an incompatible value, set it to "git" which is always supported.
if [[ "${{steps.versions.outputs.rustc-version}}" =~ ^rustc\ (1\.6[67]\.|1\.68\.0-nightly) && "${CARGO_REGISTRIES_CRATES_IO_PROTOCOL}" == "sparse" ]]; then
echo "Downgrade cargo registry protocol to git"
echo "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=git" >> $GITHUB_ENV
fi
shell: bash
- name: "Setup Rust Caching"
if: inputs.cache == 'true'
uses: Swatinem/rust-cache@v2

View File

@ -16,16 +16,16 @@
"owner": "clippy",
"pattern": [
{
"regexp": "^(warning|warn|error)(\\[(.*)\\])?: (.*)$",
"regexp": "^(?:\\x1b\\[[\\d;]+m)*(warning|warn|error)(?:\\x1b\\[[\\d;]+m)*(\\[(.*)\\])?(?:\\x1b\\[[\\d;]+m)*:(?:\\x1b\\[[\\d;]+m)* ([^\\x1b]*)(?:\\x1b\\[[\\d;]+m)*$",
"severity": 1,
"message": 4,
"code": 3
},
{
"regexp": "^([\\s->=]*(.*):(\\d*):(\\d*)|.*)$",
"file": 2,
"line": 3,
"column": 4
"regexp": "^(?:\\x1b\\[[\\d;]+m)*\\s*(?:\\x1b\\[[\\d;]+m)*\\s*--> (?:\\x1b\\[[\\d;]+m)*(.*):(\\d*):(\\d*)(?:\\x1b\\[[\\d;]+m)*$",
"file": 1,
"line": 2,
"column": 3
}
]
}