-
Notifications
You must be signed in to change notification settings - Fork 1
148 lines (123 loc) · 4.56 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
146
147
148
name: CI
on:
schedule:
- cron: "0 7 * * 1"
push:
pull_request:
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
permissions:
contents: read
jobs:
lint:
timeout-minutes: 10
runs-on: ubuntu-22.04
steps:
- name: Checkout repository and submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Prepare build environemnt
id: prepare
uses: ./.github/actions/prepare-build-env
- name: Run cargo clippy
run: |
cargo clippy --target wasm32-unknown-unknown \
--tests --all-features -- --deny "warnings"
#TODO: this should be integrated for PR builds
#uses: actions-rs/[email protected]
#with:
# token: ${{ secrets.GITHUB_TOKEN }}
# args: --target wasm32-unknown-unknown --tests --all-features
- name: Post build environemnt
if: always()
uses: ./.github/actions/post-build-env
with:
cargo-cache-primary-key: ${{ steps.prepare.outputs.cargo-cache-primary-key }}
cargo-cache-hit: ${{ steps.prepare.outputs.cargo-cache-hit }}
build:
timeout-minutes: 10
runs-on: ubuntu-22.04
steps:
- name: Checkout repository and submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Prepare build environemnt
id: prepare
uses: ./.github/actions/prepare-build-env
- name: Run wasm-pack build
run: wasm-pack build --release --target web
- name: Run wasm-opt optimization
run: |
wget https://github.com/WebAssembly/binaryen/releases/download/version_114/binaryen-version_114-x86_64-linux.tar.gz
tar zxf binaryen-version_114-x86_64-linux.tar.gz
./binaryen-version_114/bin/wasm-opt -Os -o pkg/wgpu_layers_bg.wasm pkg/wgpu_layers_bg.wasm
- name: Check wasm artifact size
run: |
brotli -Z pkg/wgpu_layers_bg.wasm
gzip -k pkg/wgpu_layers_bg.wasm
ls -lh pkg/
[[ $(stat -c %s pkg/wgpu_layers_bg.wasm.br) -lt 110000 ]]
- name: Post build environemnt
if: always()
uses: ./.github/actions/post-build-env
with:
cargo-cache-primary-key: ${{ steps.prepare.outputs.cargo-cache-primary-key }}
cargo-cache-hit: ${{ steps.prepare.outputs.cargo-cache-hit }}
unit-test:
timeout-minutes: 10
runs-on: ubuntu-22.04
steps:
- name: Checkout repository and submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Prepare build environemnt
id: prepare
uses: ./.github/actions/prepare-build-env
- name: Use libegl1-mesa latest
uses: ./.github/actions/install-graphics-driver
- name: Run cargo test
run: |
cargo test --target `rustc -vV | sed -n 's|host: ||p'` -- --nocapture
- name: Post build environemnt
if: always()
uses: ./.github/actions/post-build-env
with:
cargo-cache-primary-key: ${{ steps.prepare.outputs.cargo-cache-primary-key }}
cargo-cache-hit: ${{ steps.prepare.outputs.cargo-cache-hit }}
integration-test:
timeout-minutes: 10
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
browser: [firefox] # disable chrome for now
steps:
- name: Checkout repository and submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Prepare build environemnt
id: prepare
uses: ./.github/actions/prepare-build-env
- name: Use libegl-mesa0 latest
uses: ./.github/actions/install-graphics-driver
- name: Use firefox nightly
if: matrix.browser == 'firefox'
run: |
wget https://download-installer.cdn.mozilla.net/pub/firefox/nightly/latest-mozilla-central/firefox-120.0a1.en-US.linux-x86_64.tar.bz2
mkdir /tmp/firefox-nightly && tar -xf *.tar.bz2 -C /tmp/firefox-nightly
- name: Print browser version
if: matrix.browser == 'chrome'
run: google-chrome --version
- name: Run wasm-pack test
run: xvfb-run -a -s "-screen 0 1920x1080x24" wasm-pack test --${{ matrix.browser }} --headless --release --features console_log,console_error_panic_hook --test '*'
- name: Post build environemnt
if: always()
uses: ./.github/actions/post-build-env
with:
cargo-cache-primary-key: ${{ steps.prepare.outputs.cargo-cache-primary-key }}
cargo-cache-hit: ${{ steps.prepare.outputs.cargo-cache-hit }}