CI #3435
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
schedule: [cron: "40 1 * * *"] | |
permissions: | |
contents: read | |
env: | |
RUSTFLAGS: -Dwarnings | |
jobs: | |
test: | |
name: Test suite | |
runs-on: ubuntu-latest | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@nightly | |
- run: cd test_suite && cargo test --features unstable | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: Cargo.lock | |
path: Cargo.lock | |
continue-on-error: true | |
windows: | |
name: Test suite (windows) | |
runs-on: windows-latest | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@nightly | |
- run: cd test_suite && cargo test --features unstable -- --skip ui --exact | |
stable: | |
name: Rust ${{matrix.rust}} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
rust: [stable, beta] | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{matrix.rust}} | |
- run: cd serde && cargo build --features rc | |
- run: cd serde && cargo build --no-default-features | |
nightly: | |
name: Rust nightly ${{matrix.os == 'windows' && '(windows)' || ''}} | |
runs-on: ${{matrix.os}}-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu, windows] | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@nightly | |
- run: cd serde && cargo build | |
- run: cd serde && cargo build --no-default-features | |
- run: cd serde && cargo build --no-default-features --features alloc | |
- run: cd serde && cargo build --no-default-features --features rc,alloc | |
- run: cd serde && cargo build --no-default-features --features unstable | |
- run: cd serde && cargo test --features derive,rc,unstable | |
- run: cd test_suite/no_std && cargo build | |
if: matrix.os != 'windows' | |
- run: cd serde_derive && cargo check --tests | |
env: | |
RUSTFLAGS: --cfg exhaustive ${{env.RUSTFLAGS}} | |
if: matrix.os != 'windows' | |
build: | |
name: Rust ${{matrix.rust}} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
rust: [1.31.0, 1.34.0] | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{matrix.rust}} | |
- run: sed -i '/"test_suite"/d' Cargo.toml | |
- run: cd serde && cargo build --features rc | |
- run: cd serde && cargo build --no-default-features | |
- run: cd serde && cargo build | |
derive: | |
name: Rust 1.61.0 | |
runs-on: ubuntu-latest | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/[email protected] | |
- run: | | |
sed -i 's/proc-macro2 = { workspace = true/proc-macro2 = { version = "1"/' serde_derive*/Cargo.toml | |
sed -i 's/quote = { workspace = true/quote = { version = "1"/' serde_derive*/Cargo.toml | |
sed -i 's/syn = { workspace = true/syn = { version = "2"/' serde_derive*/Cargo.toml | |
- run: cd serde && cargo check --no-default-features | |
- run: cd serde && cargo check | |
- run: cd serde_derive && cargo check | |
alloc: | |
name: Rust 1.36.0 | |
runs-on: ubuntu-latest | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/[email protected] | |
- run: sed -i '/"test_suite"/d' Cargo.toml | |
- run: cd serde && cargo build --no-default-features --features alloc | |
minimal: | |
name: Minimal versions | |
runs-on: ubuntu-latest | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@nightly | |
- run: cargo generate-lockfile -Z minimal-versions | |
- run: cargo check --locked --workspace | |
doc: | |
name: Documentation | |
runs-on: ubuntu-latest | |
timeout-minutes: 45 | |
env: | |
RUSTDOCFLAGS: -Dwarnings | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@nightly | |
- uses: dtolnay/install@cargo-docs-rs | |
- run: cargo docs-rs -p serde | |
- run: cargo docs-rs -p serde_derive | |
- run: cargo docs-rs -p serde_derive_internals | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
if: github.event_name != 'pull_request' | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@clippy | |
- run: cd serde && cargo clippy --features rc,unstable -- -Dclippy::all -Dclippy::pedantic | |
- run: cd serde_derive && cargo clippy -- -Dclippy::all -Dclippy::pedantic | |
- run: cd serde_derive_internals && cargo clippy -- -Dclippy::all -Dclippy::pedantic | |
- run: cd test_suite && cargo clippy --tests --features unstable -- -Dclippy::all -Dclippy::pedantic | |
- run: cd test_suite/no_std && cargo clippy -- -Dclippy::all -Dclippy::pedantic | |
miri: | |
name: Miri | |
runs-on: ubuntu-latest | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@miri | |
- run: cargo miri setup | |
- run: cd serde && cargo miri test --features derive,rc,unstable | |
env: | |
MIRIFLAGS: -Zmiri-strict-provenance | |
- run: cd test_suite && cargo miri test --features unstable | |
env: | |
MIRIFLAGS: -Zmiri-strict-provenance | |
outdated: | |
name: Outdated | |
runs-on: ubuntu-latest | |
if: github.event_name != 'pull_request' | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: dtolnay/install@cargo-outdated | |
- run: cargo outdated --workspace --exit-code 1 |