-
Notifications
You must be signed in to change notification settings - Fork 1
137 lines (126 loc) · 3.61 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
schedule:
- cron: '0 6 * * SAT'
jobs:
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo fmt --all -- --check
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- run: cargo clippy --all-targets --all-features -- -D warnings
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: cargo install --force cargo-audit
- run: cargo generate-lockfile
- run: cargo audit
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
with:
targets: thumbv7m-none-eabi
- run: cargo check --workspace
- run: cargo check --workspace --no-default-features --target thumbv7m-none-eabi
doc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- run: cargo doc --all-features --no-deps
test:
needs: [fmt, clippy, audit, check, doc]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
rust: [stable, nightly]
steps:
- run: sudo -E apt-get -yq update
if: matrix.os == 'ubuntu-latest'
- run: sudo -E apt-get -yq install libxcb-shape0-dev libxcb-xfixes0-dev
if: matrix.os == 'ubuntu-latest'
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- run: cargo test
- run: cargo test --no-default-features
- run: cargo test --no-default-features --features alloc
- run: cargo test --no-default-features --features std
- run: cargo test --no-default-features --features async
miri:
needs: [test]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@nightly
with:
components: miri, rust-src
- run: cargo miri setup
- run: cargo miri test --all-features
env:
MIRIFLAGS: "-Zmiri-disable-isolation"
PROPTEST_CASES: 1
sanitize:
needs: [test]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
sanitizer: [address, leak, memory, thread]
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@nightly
with:
components: rust-src
- run: cargo test --tests --lib --all-features --target x86_64-unknown-linux-gnu -Z build-std -- --test-threads=1
env:
RUSTFLAGS: "-Z sanitizer=${{ matrix.sanitizer }}"
coverage:
needs: [test]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- run: cargo install --force cargo-tarpaulin
- run: cargo tarpaulin --all-features --workspace --engine llvm -o Xml
- uses: codecov/codecov-action@v3
with:
token: ${{secrets.CODECOV_TOKEN}}
fail_ci_if_error: true
examples:
needs: [test]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
- run: sudo -E apt-get -yq update
if: matrix.os == 'ubuntu-latest'
- run: sudo -E apt-get -yq install libxcb-shape0-dev libxcb-xfixes0-dev
if: matrix.os == 'ubuntu-latest'
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --release --examples