-
Notifications
You must be signed in to change notification settings - Fork 15
145 lines (133 loc) · 4.9 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
139
140
141
142
143
144
145
on:
push:
branches:
- main
pull_request:
name: CI
permissions:
contents: read
jobs:
clippy:
name: Clippy ${{ matrix.rust }} / ${{ matrix.triple.target }}
runs-on: ${{ matrix.triple.os }}
strategy:
matrix:
# Borrowed from https://github.com/GuillaumeGomez/sysinfo/blob/master/.github/workflows/CI.yml#L45
triple:
- { os: 'ubuntu-latest', target: 'x86_64-unknown-linux-gnu', cross: false }
- { os: 'ubuntu-latest', target: 'i686-unknown-linux-gnu', cross: true }
# `macos-latest` is now using macOS 14 and ARM64. Future runners will also
# be ARM64: https://github.com/actions/runner-images/issues/9741
- { os: 'macos-latest', target: 'x86_64-apple-darwin', cross: false, always_install_target: true }
- { os: 'macos-latest', target: 'aarch64-apple-darwin', cross: false }
- { os: 'windows-latest', target: 'x86_64-pc-windows-msvc', cross: false }
# iOS
- { os: 'macos-latest', target: 'aarch64-apple-ios', cross: true }
- { os: 'macos-latest', target: 'x86_64-apple-ios', cross: true }
## ARM64
- { os: 'ubuntu-latest', target: 'aarch64-unknown-linux-gnu', cross: true }
- { os: 'ubuntu-latest', target: 'aarch64-unknown-linux-musl', cross: true }
## ARMv7
- { os: 'ubuntu-latest', target: 'armv7-unknown-linux-gnueabihf', cross: true }
- { os: 'ubuntu-latest', target: 'armv7-unknown-linux-musleabihf', cross: true }
## ARMv6
- { os: 'ubuntu-latest', target: 'arm-unknown-linux-gnueabihf', cross: true }
- { os: 'ubuntu-latest', target: 'arm-unknown-linux-musleabihf', cross: true }
# Android
- { os: 'ubuntu-latest', target: 'aarch64-linux-android', cross: true }
- { os: 'ubuntu-latest', target: 'armv7-linux-androideabi', cross: true }
- { os: 'ubuntu-latest', target: 'x86_64-linux-android', cross: true }
- { os: 'ubuntu-latest', target: 'i686-linux-android', cross: true }
# WASM
- { os: 'ubuntu-latest', target: 'wasm32-unknown-unknown', cross: false, always_install_target: true }
rust:
- stable
# MSRV
- 1.56.0
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
components: clippy
- name: Install cross-target
if: matrix.triple.cross || matrix.triple.always_install_target
run: rustup target add ${{ matrix.triple.target }}
- uses: actions-rs/cargo@v1
with:
command: clippy
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml -- -D clippy::dbg_macro -D warnings -D missing_docs -F unused_must_use
use-cross: ${{ matrix.triple.cross }}
test:
name: Test Desktop OSes
strategy:
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
- uses: actions-rs/cargo@v1
with:
command: test
test_wasm:
name: Test wasm32-unknown-unknown
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Test wasm32
run: |
rustup target add wasm32-unknown-unknown
wasm-pack test --firefox --headless -- --features "js"
test_fallback:
name: Check fallback implementation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
- name: "Clippy"
# Install a target that is obviously not supported and then check it to ensure
# the fallback target stays in sync with the other platforms.
run: |
rustup target add x86_64-unknown-none
cargo clippy --target x86_64-unknown-none -- -D clippy::dbg_macro -D warnings -D missing_docs -F unused_must_use
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
components: rustfmt
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check