forked from Emanuele-web04/synara
-
Notifications
You must be signed in to change notification settings - Fork 3
194 lines (155 loc) · 5.9 KB
/
Copy pathci.yml
File metadata and controls
194 lines (155 loc) · 5.9 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
name: CI
on:
pull_request:
push:
branches:
- main
jobs:
quality:
name: Format, Lint, Typecheck, Test, Browser Test, Build
runs-on: ubuntu-24.04
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version-file: package.json
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version-file: package.json
- name: Cache Bun and Turbo
uses: actions/cache@v5
with:
path: |
~/.bun/install/cache
.turbo
key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}-${{ hashFiles('turbo.json') }}
restore-keys: |
${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}-
- name: Cache Playwright browsers
uses: actions/cache@v5
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ hashFiles('bun.lock') }}
restore-keys: |
${{ runner.os }}-playwright-
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Verify Linux terminal PTY native dependency
if: runner.os == 'Linux'
run: node scripts/node-pty-smoke.mjs
- name: Verify Synara identity
run: bun run brand:check
- name: Format
run: bun run fmt:check
- name: Lint
run: bun run lint
- name: Typecheck
run: bun run typecheck
- name: Test
run: bun run test
# Run the workspace-local playwright binary directly: bunx stalled after
# the chromium download on hosted runners. The step timeout stops any
# remaining apt/download stalls from eating the whole job budget.
- name: Install browser test runtime
timeout-minutes: 15
env:
DEBIAN_FRONTEND: noninteractive
run: |
cd apps/web
./node_modules/.bin/playwright install --with-deps chromium
- name: Browser test (stable)
timeout-minutes: 20
run: bun run --cwd apps/web test:browser:stable
# Pixel/font/layout comparisons are tracked explicitly in
# apps/web/BROWSER_TEST_QUARANTINE.md while their Linux rendering is fixed.
# All untagged browser tests run in the blocking stable step above.
- name: Browser test (Linux geometry quarantine)
continue-on-error: true
timeout-minutes: 10
run: bun run --cwd apps/web test:browser:geometry
- name: Build desktop pipeline
run: bun run build:desktop
- name: Verify preload bundle output
run: |
test -f apps/desktop/dist-electron/preload.js
grep -nE "desktopBridge|getWsUrl|PICK_FOLDER_CHANNEL|wsUrl" apps/desktop/dist-electron/preload.js
windows_process:
name: Windows Process Regression
runs-on: windows-2022
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version-file: package.json
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version-file: package.json
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Verify Windows terminal PTY native dependency under Bun
run: bun scripts/node-pty-smoke.mjs
- name: Test Windows process planning
run: bun run --cwd packages/shared test src/windowsProcess.test.ts
- name: Test Effect Windows process spawn
run: bun run --cwd apps/server test src/windowsProcessEffect.test.ts
- name: Test Windows desktop backend shutdown
run: bun run --cwd apps/desktop test src/backendShutdown.windows.integration.test.ts
# The 0.6.0 wedge hit Windows hardest, and the repair path is built out of
# exactly what Windows treats differently: unlinking a marker, reclaiming
# stranded partials, and renaming a database file that may still be held
# open. Linux-only coverage cannot speak for any of that.
- name: Test migration recovery marker
run: bun run --cwd packages/shared test src/migrationRecovery.test.ts
- name: Test desktop migration recovery
run: bun run --cwd apps/desktop test src/desktopMigrationRecovery.test.ts
- name: Test migration backup and restore
run: bun run --cwd apps/server test src/persistence/MigrationBackup.test.ts
- name: Test migration replay
run: bun run --cwd apps/server test src/persistence/Migrations/MigrationReplay.test.ts
# Released (id, name) migration pairs are recorded in every user's
# effect_sql_migrations table, so renumbering or renaming one corrupts existing
# installs. This job needs the release tags, hence the unshallow checkout; the
# guard itself is dependency-free and skips with a warning if tags are missing.
migration_lineage:
name: Migration Lineage
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version-file: package.json
- name: Verify released migration lineage
run: node scripts/check-migration-lineage.ts
release_smoke:
name: Release Smoke
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version-file: package.json
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version-file: package.json
- name: Install dependencies
run: bun install --frozen-lockfile --ignore-scripts
- name: Verify Synara identity
run: bun run brand:check
- name: Exercise release-only workflow steps
run: node scripts/release-smoke.ts