-
Notifications
You must be signed in to change notification settings - Fork 31
129 lines (124 loc) · 3.34 KB
/
build.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
name: build
on:
push:
branches:
- master
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install RIME dependencies
run: |
sudo apt install -y ninja-build \
clang-format \
libboost-dev \
libboost-filesystem-dev \
libboost-regex-dev \
libboost-system-dev \
libyaml-cpp-dev \
libleveldb-dev \
libmarisa-dev \
libopencc-dev
- name: Use Node.js latest
uses: actions/setup-node@v2
with:
node-version: 20.x
- name: Install node dependencies
run: |
npm i -g pnpm
pnpm i
- name: Get submodules
run: |
pnpm run submodule
- name: Get font
run: |
pnpm run font
- name: Run lint
run: |
pnpm run lint
- name: Install emsdk
run: |
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install latest
./emsdk activate latest
- name: Build wasm
run: |
. emsdk/emsdk_env.sh
pnpm run native
pnpm run schema
pnpm run lib
pnpm run wasm
- name: Check wasm reproducibility
run: |
pnpm run checksum
- name: Build
run: |
pnpm run build
- name: Tar files
run: tar --exclude=build/librime_native/bin/build -cvf artifact.tar build/librime_native/bin dist
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: artifact.tar
path: artifact.tar
test:
needs: build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
browser: [chromium, firefox] # webkit
include:
- os: macos-latest
browser: webkit
steps:
- uses: actions/checkout@v3
- name: Use Node.js latest
uses: actions/setup-node@v2
with:
node-version: 20.x
- name: Install node dependencies
run: |
npm i -g pnpm
pnpm i
npx playwright install
npx playwright install-deps ${{ matrix.browser }}
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: artifact.tar
- name: Untar files
run: tar -xvf artifact.tar
- name: Test
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
npx playwright test --browser ${{ matrix.browser }} test/
- name: Test device
if: ${{ matrix.os == 'macos-latest' }}
run: |
npx playwright test --browser ${{ matrix.browser }} test-device/
release:
needs: test
if: ${{ github.ref == 'refs/heads/master' }}
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v3
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: artifact.tar
- name: Untar files
run: tar -xvf artifact.tar
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mv dist my-rime-dist
zip -r my-rime-dist.zip my-rime-dist
gh release upload latest my-rime-dist.zip --clobber