-
Notifications
You must be signed in to change notification settings - Fork 60
143 lines (138 loc) · 4.37 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
on:
pull_request:
branches:
- master
- "[0-9]+.[0-9]+"
push:
branches:
- staging
- trying
name: Continuous integration
jobs:
compile_and_test_min_msrv:
name: Compile and test min MSRV
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
env:
RUSTFLAGS: -D warnings
steps:
- uses: actions/checkout@v4
- uses: dtolnay/[email protected]
with:
components: clippy
- name: Clippy
run: cargo clippy -v -p palette
- name: Tests
run: cargo test -v -p palette
compile_and_test_max_msrv:
name: Compile and test max MSRV
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
env:
RUSTFLAGS: -D warnings
steps:
- uses: actions/checkout@v4
- uses: dtolnay/[email protected]
with:
components: clippy
- uses: taiki-e/install-action@cargo-hack
- name: find-crate check
run: cargo clippy -v -p palette --no-default-features --features "std find-crate"
- name: Default check
run: cargo clippy -v -p palette
- name: Check all features
run: cargo clippy -v -p palette --all-features
- name: Test all features
run: cargo test -v -p palette --all-features
- name: Test each feature
run: cargo hack test --tests --feature-powerset --ignore-private --skip default,find-crate --optional-deps libm --depth 2
integration_tests:
name: integration tests
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
env:
RUSTFLAGS: -D warnings
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Run integration tests
run: cargo test -v -p integration_tests --all-features
check_stable_beta_nightly:
name: Quick check
strategy:
matrix:
toolchain: [beta, stable, nightly]
runs-on: ubuntu-latest
env:
RUSTFLAGS: -D warnings
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
components: clippy
- uses: taiki-e/install-action@cargo-hack
- name: Check all features
run: cargo clippy -v -p palette --all-features
- name: Check each feature with libm
run: cargo hack clippy --each-feature --ignore-private --features libm --skip default,find-crate --ignore-unknown-features
- name: Check each feature with std
run: cargo hack clippy --each-feature --ignore-private --features std --skip default,find-crate --optional-deps libm --ignore-unknown-features
no_std:
name: "Test #[no_std]"
runs-on: ubuntu-latest
env:
RUSTFLAGS: -D warnings
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
targets: thumbv6m-none-eabi
- name: "Build with #[no_std]"
run: cargo build -v -p no_std_test --all-features --target thumbv6m-none-eabi
miri:
name: Miri tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: miri
- name: Unit tests
run: cargo miri test -p palette --lib --features "bytemuck" -- -Z unstable-options --report-time
- name: Documentation tests
run: cargo miri test -p palette --doc --features "bytemuck" -- -Z unstable-options --report-time
documentation:
name: Documentation
runs-on: ubuntu-latest
env:
RUSTDOCFLAGS: -D warnings
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: "Generate documentation"
run: cargo doc -p palette --all-features
# Refs: https://github.com/rust-lang/crater/blob/9ab6f9697c901c4a44025cf0a39b73ad5b37d198/.github/workflows/bors.yml#L125-L149
#
# ALL THE PREVIOUS JOBS NEEDS TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
ci-success:
name: ci
if: success()
needs:
- compile_and_test_min_msrv
- compile_and_test_max_msrv
- integration_tests
- check_stable_beta_nightly
- no_std
- miri
- documentation
runs-on: ubuntu-latest
steps:
- name: Mark the job as a success
run: exit 0