-
Notifications
You must be signed in to change notification settings - Fork 15
138 lines (126 loc) · 3.07 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
138
on:
push:
branches:
- main
tags:
- '*'
pull_request:
schedule:
- cron: "41 3 * * *"
name: CI
jobs:
linux_build:
name: Linux Build
runs-on: ubuntu-latest
env:
RUSTFLAGS: "-D warnings"
strategy:
matrix:
target:
- "aarch64-unknown-linux-gnu"
- "aarch64-unknown-linux-musl"
- "x86_64-unknown-linux-gnu"
- "x86_64-unknown-linux-musl"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- run: cargo build --target ${{ matrix.target }}
macos_build:
name: Mac Build
runs-on: macos-12
env:
RUSTFLAGS: "-D warnings"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build
windows_build:
name: Windows Build
runs-on: windows-latest
env:
RUSTFLAGS: "-D warnings"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build
linux_test:
name: Linux Unit Tests
runs-on: ubuntu-latest
env:
RUSTFLAGS: "-D warnings"
strategy:
matrix:
target: ["x86_64-unknown-linux-musl", "x86_64-unknown-linux-gnu"]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- run: cargo test --all-features --target ${{ matrix.target }}
macos_test:
name: Mac Test
runs-on: macos-12
env:
RUSTFLAGS: "-D warnings"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo test
windows_test:
name: Windows Unit Tests
runs-on: ubuntu-latest
env:
RUSTFLAGS: "-D warnings"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo test
clippy_check:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- run: cargo clippy --all-features -- --deny warnings
docs:
name: docs
runs-on: ubuntu-latest
env:
RUSTDOCFLAGS: "-D warnings"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo doc
format_check:
name: Rust Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- run: cargo +nightly fmt -- --check
release:
name: crates.io release
if: startsWith(github.ref, 'refs/tags/')
needs:
- clippy_check
- docs
- format_check
- linux_build
- linux_test
- macos_build
- macos_test
- windows_build
- windows_test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo publish --token ${CRATES_IO_TOKEN}
env:
CRATES_IO_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}