-
Notifications
You must be signed in to change notification settings - Fork 0
133 lines (99 loc) · 2.68 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
name: CI
on:
push:
branches: ["master"]
pull_request:
branches: ["master"]
workflow_dispatch:
jobs:
format_client:
name: Format client
runs-on: ubuntu-latest
defaults:
run:
working-directory: client
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: "yarn"
cache-dependency-path: "client/yarn.lock"
# Always install the version specified in yarn.lock
- name: Install prettier
run: |
prettier_version=$(awk "/^prettier/{getline; print}" yarn.lock | cut -d "\"" -f 2)
npm i -g prettier@$prettier_version
- name: Check format
run: yarn check-format
format_server:
runs-on: ubuntu-latest
name: Format server
defaults:
run:
working-directory: server
steps:
- uses: actions/checkout@v3
- name: Check format
run: cargo fmt --check
format_wasm:
runs-on: ubuntu-latest
name: Format WASM
defaults:
run:
working-directory: wasm
steps:
- uses: actions/checkout@v3
- name: Check format
run: cargo fmt --check
clippy_server:
runs-on: ubuntu-latest
name: Clippy Server
defaults:
run:
working-directory: server
steps:
- uses: actions/checkout@v3
- name: Add clippy
run: rustup component add clippy
- name: Check clippy warnings
run: cargo clippy --all-targets -- -D warnings
clippy_wasm:
runs-on: ubuntu-latest
name: Clippy WASM
defaults:
run:
working-directory: wasm
steps:
- uses: actions/checkout@v3
- name: Add clippy
run: rustup component add clippy
- name: Check clippy warnings
run: cargo clippy --all-targets -- -D warnings
build:
name: Build
runs-on: ubuntu-latest
needs:
[format_client, format_server, format_wasm, clippy_server, clippy_wasm]
defaults:
run:
working-directory: client
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: "yarn"
cache-dependency-path: "client/yarn.lock"
- name: Sync rust-toolchain
run: rustc --version
- uses: Swatinem/rust-cache@v2
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Setup
run: yarn setup
# This confirms that there are no changes after setup script runs
- name: Check git status
run: git status --porcelain | wc -l | grep -q -w "0"
- name: Build
run: yarn build