-
Notifications
You must be signed in to change notification settings - Fork 204
134 lines (110 loc) · 3.44 KB
/
ci.yml
File metadata and controls
134 lines (110 loc) · 3.44 KB
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
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
name: CI
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
build:
name: Rust on ${{ matrix.os }}
if: github.event.pull_request.draft == false
needs: [fmt, clippy]
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-latest
runs-on: ${{ matrix.os }}
steps:
- name: Free disk space on Ubuntu
if: startsWith(matrix.os, 'ubuntu')
run: |
df -h
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
sudo rm -rf /opt/hostedtoolcache/CodeQL
df -h
- name: Checkout repo
uses: actions/checkout@v4
- name: Install dependencies on Ubuntu
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get -y update
sudo apt-get -y install clang libwayland-dev libxkbcommon-x11-dev pkg-config libvulkan-dev libxcb-shape0-dev libxcb-xfixes0-dev libgtk-3-dev
- name: Update toolchain
run: |
rustup update --no-self-update
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2
with:
save-if: ${{ github.event_name != 'merge_group' }}
- name: Install cargo-nextest
uses: taiki-e/install-action@v2
with:
tool: cargo-nextest
- name: Fetch dependencies
run: cargo fetch
- name: Build
run: cargo build
- name: Run tests
run: cargo nextest run --workspace --no-fail-fast
- name: Run doc tests
# Only run doctests on macOS to improve CI times - macOS is currently the fastest runner
if: startsWith(matrix.os, 'macos')
run: cargo test --doc --no-fail-fast
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Update toolchain & add rustfmt
run: |
rustup update
rustup component add rustfmt
- name: Run rustfmt
run: cargo fmt --all --check
clippy:
name: Clippy on ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-latest
runs-on: ${{ matrix.os }}
steps:
- name: Free disk space on Ubuntu
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
sudo rm -rf /opt/hostedtoolcache/CodeQL
- name: Checkout repo
uses: actions/checkout@v4
- name: Update toolchain & add clippy
run: |
rustup update --no-self-update
rustup component add clippy
- name: Install dependencies on Ubuntu
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get -y update
sudo apt-get -y install clang libwayland-dev libxkbcommon-x11-dev pkg-config libvulkan-dev libxcb-shape0-dev libxcb-xfixes0-dev libgtk-3-dev
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2
with:
save-if: ${{ github.event_name != 'merge_group' }}
- name: Fetch dependencies
run: cargo fetch
- name: Run clippy
run: cargo clippy -- --deny warnings