-
Notifications
You must be signed in to change notification settings - Fork 4
134 lines (109 loc) · 3.2 KB
/
ci.yml
File metadata and controls
134 lines (109 loc) · 3.2 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
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
# ── Type check + lint + test (parallel with build + rust-test) ───────────────
quality:
name: Quality
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Cache pnpm store
uses: actions/cache@v4
with:
path: ~/.pnpm
key: pnpm-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
pnpm-${{ runner.os }}-
- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts
- name: Type check
run: pnpm exec vue-tsc --noEmit
- name: Lint
run: pnpm lint
- name: Test
run: pnpm test
# ── Tauri build (parallel with quality + rust-test, no blocking dependency) ───
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Cache pnpm store
uses: actions/cache@v4
with:
path: ~/.pnpm
key: pnpm-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
pnpm-${{ runner.os }}-
- name: Install Linux build deps
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
libglib2.0-dev \
librsvg2-dev \
libffmpegthumbnailer-dev \
libjpeg-dev \
libvips-dev \
ffmpeg
- name: Setup Rust
uses: dtolnay/[email protected]
- name: Cache Rust cargo
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri
- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts
- name: Build Tauri
run: pnpm tauri build
# ── Rust unit tests (parallel with quality + build) ───────────────────────────
rust-test:
name: Rust Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Linux build deps
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
libglib2.0-dev \
librsvg2-dev \
libffmpegthumbnailer-dev \
libjpeg-dev \
libvips-dev \
ffmpeg
- name: Setup Rust
uses: dtolnay/[email protected]
- name: Cache Rust cargo
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri
- name: Generate Cargo.lock
run: cd src-tauri && cargo generate-lockfile
- name: Run unit tests
run: |
cd src-tauri
cargo test --lib --bins