-
Notifications
You must be signed in to change notification settings - Fork 81
153 lines (144 loc) · 4.32 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
149
150
151
152
153
name: Continuous Integration
on:
pull_request:
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
NODE_VERSION: "21"
jobs:
check:
name: Compile and Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
cache: "npm"
- name: Setup Rust
uses: dsherret/rust-toolchain-file@v1
- name: Install Nextest
uses: taiki-e/install-action@nextest
- name: Install wasm-pack
uses: taiki-e/install-action@wasm-pack
- name: Install wasm-strip and wasm-opt
run: sudo apt-get update && sudo apt-get install -y wabt binaryen
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Install JS Dependencies
run: npm ci
- name: Type Checking
run: cargo check --workspace --verbose --locked
- name: Unit Tests
run: wasm-pack test --headless --firefox
- name: Build Package
run: npm run build
- name: Integration Tests
run: npm run test
examples:
name: Build Examples
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
cache: "npm"
- name: Setup Rust
uses: dsherret/rust-toolchain-file@v1
- name: Install wasm-pack
uses: taiki-e/install-action@wasm-pack
- name: Install wasm-strip and wasm-opt
run: sudo apt-get update && sudo apt-get install -y wabt binaryen
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Install JS Dependencies
run: npm ci
- name: Build Package
run: npm run build
- name: Build the wasmer.sh Example
run: |
npm ci
npm run build
working-directory: "examples/wasmer.sh"
- name: Build the Markdown Editor Example
run: |
npm ci
npm run build
working-directory: "examples/markdown-editor"
- name: Build the (Improved) Markdown Editor Example
run: |
npm ci
npm run build
working-directory: "examples/markdown-editor-improved"
- name: Build the ffmpeg demo
run: |
npm ci
npm run build
working-directory: "examples/ffmpeg-react"
api-docs:
name: API Docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: 16
- name: Setup Rust
uses: dsherret/rust-toolchain-file@v1
- name: Install wasm-pack
uses: taiki-e/install-action@wasm-pack
- name: Install wasm-strip and wasm-opt
run: sudo apt-get update && sudo apt-get install -y wabt binaryen
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Install JS Dependencies
run: npm ci
- name: Build
run: npm run build
- name: Generate Docs
run: npm run docs
- name: Upload API Docs
uses: JamesIves/[email protected]
if: github.ref == 'refs/heads/main'
with:
branch: gh-pages
folder: docs/public
single-commit: true
lints:
name: Linting and Formatting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Setup Rust
uses: dsherret/rust-toolchain-file@v1
- name: Check Formatting
run: cargo fmt --all --verbose --check
- name: Clippy
run: cargo clippy --workspace --verbose
workflow-times:
name: Workflow Timings
runs-on: ubuntu-latest
needs:
- check
- examples
steps:
- name: Time Reporter
uses: Michael-F-Bryan/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
jobs: |
Compile and Test
Build Examples
message: |
Make sure you keep an eye on build times!
The goal is to keep CI times under 10 minutes so developers can maintain a fast edit-compile-test cycle.