Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revise Rust CI workflow. #80

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 43 additions & 22 deletions .github/workflows/rust-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,33 @@ on:
workflow_call:
inputs:
rust_msrv:
description: The minimum support Rust version for your project, e.g. 1.71.0.
description: >
The minimum support Rust version to test the project with,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The minimum support Rust version to test the project with,
The minimum supported Rust version to test the project with,

e.g. 1.71.0.
required: true
type: string
test_minimal_versions:
description: Test using minimal dependency versions from Cargo.toml.
test_minimal_version:
description: >
If non-empty, test using minimal dependency versions from Cargo.toml
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This description fails to mention that the string should be a Rust version number, I think that would be helpful.

and the Rust version provided.
required: false
type: string
default: ""
check_fmt:
description: Whether to run a cargo fmt check.
required: false
type: boolean
default: false
jobs:
build_and_test:
name: build and test
build-and-test:
name: Build and test
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
rust: ["${{ inputs.rust_msrv }}", stable, beta, nightly]
env:
RUSTFLAGS: "-D warnings"
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand All @@ -27,31 +38,41 @@ jobs:
with:
rust-version: ${{ matrix.rust }}

# We run build and test twice -- once with full features and once without
# any features at all -- to make it more likely that everything works.

# Clippy.
#
# Only do this once with all features enabled.
# Only do Clippy on stable for the moment, due to
# clippy::unknown_clippy_lints being removed.
- if: matrix.rust == 'nightly'
run: rustup component add clippy
- if: matrix.rust == 'nightyl'
- if: matrix.rust == 'stable'
name: Run Clippy.
run: cargo clippy --all --all-features -- -D warnings

# Build
- run: cargo build --verbose --all --all-features
- run: cargo build --verbose --all
# Fmt.
- if: inputs.check_fmt && matrix.rust == 'stable' && matrix.os = 'ubuntu-latest'
name: Check formatting.
run: cargo fmt --all -- --check

# Test
- run: cargo test --verbose --all --all-features
# Build & Test
- run: cargo test --all --all-features
- run: cargo check --no-default-features --all --all-features

# Test using minimal dependency versions from Cargo.toml
- if: inputs.test_minimal_versions && matrix.rust != 'beta' && matrix.rust != 'nightly'
minimal-versions:
name: Check minimal versions
if: inputs.test_minimal_version != ""
runs-on: ubuntu-latest
env:
RUSTFLAGS: "-D warnings"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: hecrj/setup-rust-action@v2
with:
rust-version: "${{ inputs.test_minimal_version }}"
- name: Install nightly Rust
run: rustup install nightly
- name: Check with minimal-versions
run: |
rustup toolchain install nightly
cargo +nightly update -Z minimal-versions
cargo build --verbose --all --all-features
cargo test --verbose --all --all-features
name: Check and test with minimal-versions
cargo check --all-features --all-targets --locked