88 RUSTDOCFLAGS : ' -Dwarnings'
99
1010jobs :
11+ rust-version :
12+ name : Minimal supported Rust version
13+ outputs :
14+ version : ${{ steps.read_version.outputs.msrv }}
15+ runs-on : ubuntu-latest
16+ steps :
17+ - uses : actions/checkout@v4
18+ - id : read_version
19+ run : |
20+ awk -F '=' \
21+ '/^rust-version[[:space:]]*=/ { gsub(/([" ]|#.*)/,"",$2); print ("msrv=" $2) }' \
22+ Cargo.toml \
23+ | tee -a "$GITHUB_OUTPUT"
24+
1125 test-linux :
1226 name : Test (Linux)
27+ needs : rust-version
1328 runs-on : ubuntu-latest
29+ strategy :
30+ matrix :
31+ rust-version :
32+ - ${{ needs.rust-version.outputs.version }}
33+ - stable
1434 steps :
1535 - name : checkout source
1636 uses : actions/checkout@v4
2444 ~/.cargo/registry/cache/
2545 ~/.cargo/git/db/
2646 target/
27- key : ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
28- restore-keys : ${{ runner.os }}-cargo-
47+ key : ${{ runner.os }}-cargo-${{ matrix.rust-version}}-${{ hashFiles('**/Cargo.lock') }}
48+ restore-keys : ${{ runner.os }}-cargo-${{ matrix.rust-version }}-
2949 - name : set up nginx deps cache
3050 uses : actions/cache@v4
3151 continue-on-error : false
@@ -38,24 +58,29 @@ jobs:
3858 .cache/*.tar.sig
3959 key : ${{ runner.os }}-deps-${{ hashFiles('**/nginx-sys/build.rs') }}
4060 restore-keys : ${{ runner.os }}-deps-
41- - uses : dtolnay/rust-toolchain@stable
61+
62+ - uses : dtolnay/rust-toolchain@master
4263 with :
4364 components : rustfmt, clippy
65+ toolchain : ${{ matrix.rust-version }}
4466
4567 - name : build
4668 id : build
4769 run : cargo build --workspace --all-targets --all-features
4870
4971 - name : run clippy
50- if : ${{ !cancelled() && steps.build.outcome == 'success' }} # always run if build succeeds
72+ # always run if build succeeds
73+ if : ${{ !cancelled() && steps.build.outcome == 'success' }}
5174 run : cargo clippy --workspace --all-targets --all-features -- -Dwarnings
5275
5376 - name : run tests
54- if : ${{ !cancelled() && steps.build.outcome == 'success' }} # always run if build succeeds
77+ # always run if build succeeds
78+ if : ${{ !cancelled() && steps.build.outcome == 'success' }}
5579 run : cargo test --workspace --all-features
5680
5781 - name : rustdoc
58- if : ${{ !cancelled() && steps.build.outcome == 'success' }} # always run if build succeeds
82+ # always run if build succeeds
83+ if : ${{ !cancelled() && steps.build.outcome == 'success' }}
5984 run : cargo doc --no-deps
6085
6186 examples-linux :
0 commit comments