8
8
RUSTDOCFLAGS : ' -Dwarnings'
9
9
10
10
jobs :
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
+
11
25
test-linux :
12
26
name : Test (Linux)
27
+ needs : rust-version
13
28
runs-on : ubuntu-latest
29
+ strategy :
30
+ matrix :
31
+ rust-version :
32
+ - ${{ needs.rust-version.outputs.version }}
33
+ - stable
14
34
steps :
15
35
- name : checkout source
16
36
uses : actions/checkout@v4
24
44
~/.cargo/registry/cache/
25
45
~/.cargo/git/db/
26
46
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 }}-
29
49
- name : set up nginx deps cache
30
50
uses : actions/cache@v4
31
51
continue-on-error : false
@@ -38,24 +58,29 @@ jobs:
38
58
.cache/*.tar.sig
39
59
key : ${{ runner.os }}-deps-${{ hashFiles('**/nginx-sys/build.rs') }}
40
60
restore-keys : ${{ runner.os }}-deps-
41
- - uses : dtolnay/rust-toolchain@stable
61
+
62
+ - uses : dtolnay/rust-toolchain@master
42
63
with :
43
64
components : rustfmt, clippy
65
+ toolchain : ${{ matrix.rust-version }}
44
66
45
67
- name : build
46
68
id : build
47
69
run : cargo build --workspace --all-targets --all-features
48
70
49
71
- 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' }}
51
74
run : cargo clippy --workspace --all-targets --all-features -- -Dwarnings
52
75
53
76
- 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' }}
55
79
run : cargo test --workspace --all-features
56
80
57
81
- 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' }}
59
84
run : cargo doc --no-deps
60
85
61
86
examples-linux :
0 commit comments