Skip to content

Commit

Permalink
update github actions
Browse files Browse the repository at this point in the history
* Node.js 16 actions are deprecated; update checkout
* action-rs/* are archived; switch to dtolnay/rust-toolchain
  (unclear how to properly configure cache)
  • Loading branch information
stbuehler committed Jun 25, 2024
1 parent 6f506ca commit ac9e992
Showing 1 changed file with 26 additions and 116 deletions.
142 changes: 26 additions & 116 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,179 +5,89 @@ name: Rust CI
jobs:
# if this fails we don't try anything else on stable
#
# we use multiple jobs so no single check prevents others from being run;
# but use a cache to speedup steps after build
# (if initial build fails nothing else is checked)
#
# TODO: unclear how to setup cache with dtolnay/rust-toolchain
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Cache stable
uses: actions/cache@v2
with:
key: build-stable-${{ github.run_id }}
path: |
/usr/share/rust/.cargo/
target/
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Build default features
run: cargo build
- name: Build with all features
uses: actions-rs/cargo@v1
with:
command: build
args: --all-features
run: cargo build --all-features

check:
name: Check
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v2
- name: Cache stable
uses: actions/cache@v2
with:
key: build-stable-${{ github.run_id }}
path: |
/usr/share/rust/.cargo/
target/
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Check
uses: actions-rs/cargo@v1
with:
command: check
args: --all-features
run: cargo check --all-features

test:
name: Test Suite
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v2
- name: Cache stable
uses: actions/cache@v2
with:
key: build-stable-${{ github.run_id }}
path: |
/usr/share/rust/.cargo/
target/
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Test
uses: actions-rs/cargo@v1
with:
command: test
args: --all-features
run: cargo test --all-features

clippy:
name: Clippy
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v2
- name: Cache stable
uses: actions/cache@v2
with:
key: build-stable-${{ github.run_id }}
path: |
/usr/share/rust/.cargo/
target/
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
components: clippy
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings
run: cargo clippy -- -D warnings

doc:
name: Rustdoc
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v2
- name: Cache stable
uses: actions/cache@v2
with:
key: build-stable-${{ github.run_id }}
path: |
/usr/share/rust/.cargo/
target/
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Rustdoc
uses: actions-rs/cargo@v1
with:
command: doc
args: --all-features
run: cargo doc --all-features

# no cache for nightly, run all steps in same job - if one fails, the others won't be tried
build-nightly:
name: Build [nightly]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
profile: minimal
toolchain: nightly
override: true
components: rustfmt
# nightly fmt
- name: Rustfmt [nightly]
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
run: cargo fmt --all -- --check
# nightly build
- name: Build [nightly]
uses: actions-rs/cargo@v1
with:
command: build
run: cargo build
# nightly build all features
- name: Build with all features [nightly]
uses: actions-rs/cargo@v1
with:
command: build
args: --all-features
run: cargo build --all-features
# check
- name: Check [nightly]
uses: actions-rs/cargo@v1
with:
command: check
args: --all-features
run: cargo check --all-features
# doc_cfg not stable yet
# https://doc.rust-lang.org/unstable-book/language-features/doc-cfg.html
# https://github.com/rust-lang/rust/issues/43781
- name: Rustdoc [nightly]
uses: actions-rs/cargo@v1
env:
# this should need nightly
RUSTDOCFLAGS: "--cfg doc_cfg"
with:
command: doc
args: --all-features
run: cargo doc --all-features
# deploy docs from nightly for doc_cfg feature
# (for stable we'd create a new job and use the cache)
- name: Deploy docs
Expand Down

0 comments on commit ac9e992

Please sign in to comment.