-
Notifications
You must be signed in to change notification settings - Fork 4
136 lines (128 loc) · 3.52 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
---
name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
env:
CARGO_TERM_COLOR: always
jobs:
lint:
name: ${{matrix.command}}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- {command: fmt, rust: nightly}
- {command: clippy, rust: nightly}
- {command: doc, rust: nightly}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust (${{matrix.rust}})
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: '${{matrix.rust}}'
override: true
components: 'rustfmt, clippy'
- name: Run cargo ${{matrix.command}}
uses: actions-rs/cargo@v1
with:
command: ${{matrix.command}}
args: "${{matrix.command == 'fmt' && '--all -- --check' || matrix.command == 'doc' && '--workspace' || '--workspace -- -D warnings'}}"
test:
name: Test
runs-on: ubuntu-${{matrix.ubuntu}}
strategy:
fail-fast: false
matrix:
include:
- {ubuntu: latest, rust: nightly}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust (${{matrix.rust}})
uses: actions-rs/toolchain@v1
with:
toolchain: '${{matrix.rust}}'
profile: minimal
override: true
- name: Build and test all crates
run: cargo test -vv --workspace
- name: Build examples
run: cargo b --examples --verbose
bench:
name: Benchmark
runs-on: ubuntu-${{matrix.ubuntu}}
strategy:
fail-fast: false
matrix:
include:
- {ubuntu: latest, rust: nightly}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust (${{matrix.rust}})
uses: actions-rs/toolchain@v1
with:
toolchain: '${{matrix.rust}}'
profile: minimal
override: true
- name: Build and bench
run: cargo bench -vv --workspace
audit:
name: Audit
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
override: true
- name: Install cargo audit
run: cargo install cargo-audit
- name: Run cargo audit
run: cargo audit
codecov:
name: Code coverage
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
override: true
- name: Install tarpaulin
run: cargo install cargo-tarpaulin
- name: Run code coverage
run: cargo tarpaulin --verbose --out Xml --ignore-tests
- name: Upload code coverage
run: bash <(curl -s https://codecov.io/bash)
addr_san:
name: Address sanitizer
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
override: true
- name: Run test with sanitizer
env:
RUSTFLAGS: "-Z sanitizer=address"
RUSTDOCFLAGS: "-Z sanitizer=address"
run: cargo test --target x86_64-unknown-linux-gnu --workspace