fix: make tree-sitter WASM build failure non-fatal when cache exists (#2602)

## Summary
- If the WASM build fails (e.g. GitHub CDN outage for tree-sitter-cli or
wasi-sdk) but a cached `.wasm` file already exists, warn instead of
crashing `pnpm install`
- Only hard-fail when no cached WASM exists at all

This prevents transient CDN outages from blocking deploys when the WASM
artifacts are already cached.

## Test plan
- [ ] CI passes on this PR (validates the postinstall script doesn't
crash)
- [ ] Verify deploy workflow can proceed when WASM cache hits
This commit is contained in:
Kevin Turcios 2026-04-13 11:43:07 -05:00 committed by GitHub
parent d7a8b8f227
commit 48b5e2b46d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 34 additions and 22 deletions

View file

@ -58,8 +58,9 @@ jobs:
- name: Build and package app
working-directory: js
run: pnpm --filter cf-webapp build
zip -qr cfwebapp.zip . .next node_modules package.json public
run: |
pnpm --filter codeflash-webapp build
cd cf-webapp && zip -qr cfwebapp.zip . .next node_modules package.json public
- name: Upload artifact for deployment jobs
uses: actions/upload-artifact@v7

View file

@ -96,11 +96,13 @@
"prettier": "^3.8.2",
"prisma": "^7.7.0",
"simple-git-hooks": "^2.9.0",
"tree-sitter-cli": "^0.26.3",
"tree-sitter-python": "^0.25.0",
"typescript": "~5.4.5",
"vitest": "^4.1.4"
},
"optionalDependencies": {
"tree-sitter-cli": "^0.26.3",
"tree-sitter-python": "^0.25.0"
},
"engines": {
"node": ">=20.0.0"
},

View file

@ -71,6 +71,10 @@ try {
writeFileSync(VERSION_STAMP, installedVersion)
console.log(`[postinstall] Built and cached tree-sitter-python.wasm (v${installedVersion})`)
} catch (err) {
console.error("[postinstall] Failed to build tree-sitter-python.wasm:", err.message)
process.exit(1)
if (existsSync(WASM_FILE)) {
console.warn("[postinstall] Failed to rebuild tree-sitter-python.wasm, using stale cached version:", err.message)
} else {
console.error("[postinstall] Failed to build tree-sitter-python.wasm and no cached version exists:", err.message)
process.exit(1)
}
}

View file

@ -58,7 +58,7 @@ importers:
version: 2.6.1(@opentelemetry/api@1.9.1)
'@prisma/client':
specifier: ^7.7.0
version: 7.7.0(prisma@7.7.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3))(typescript@5.9.3)
version: 7.7.0(prisma@7.7.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3))(typescript@5.9.3)
'@sentry/node':
specifier: ^10.48.0
version: 10.48.0(@opentelemetry/exporter-trace-otlp-http@0.214.0(@opentelemetry/api@1.9.1))
@ -164,7 +164,7 @@ importers:
version: 3.8.2
prisma:
specifier: ^7.7.0
version: 7.7.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)
version: 7.7.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)
supertest:
specifier: ^7.2.2
version: 7.2.2
@ -400,18 +400,19 @@ importers:
simple-git-hooks:
specifier: ^2.9.0
version: 2.13.1
tree-sitter-cli:
specifier: ^0.26.3
version: 0.26.8
tree-sitter-python:
specifier: ^0.25.0
version: 0.25.0
typescript:
specifier: ~5.4.5
version: 5.4.5
vitest:
specifier: ^4.1.4
version: 4.1.4(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@1.8.0))(vite@7.3.2(@types/node@25.6.0)(jiti@1.21.7)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
optionalDependencies:
tree-sitter-cli:
specifier: ^0.26.3
version: 0.26.8
tree-sitter-python:
specifier: ^0.25.0
version: 0.25.0
common:
dependencies:
@ -429,7 +430,7 @@ importers:
version: 7.7.0
'@prisma/client':
specifier: ^7.7.0
version: 7.7.0(prisma@7.7.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3))(typescript@5.9.3)
version: 7.7.0(prisma@7.7.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3))(typescript@5.9.3)
'@prisma/sqlcommenter-query-insights':
specifier: ^7.7.0
version: 7.7.0
@ -463,7 +464,7 @@ importers:
version: 3.8.2
prisma:
specifier: ^7.7.0
version: 7.7.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)
version: 7.7.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)
simple-git-hooks:
specifier: ^2.9.0
version: 2.13.1
@ -9850,11 +9851,11 @@ snapshots:
prisma: 7.7.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.4.5)
typescript: 5.4.5
'@prisma/client@7.7.0(prisma@7.7.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3))(typescript@5.9.3)':
'@prisma/client@7.7.0(prisma@7.7.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3))(typescript@5.9.3)':
dependencies:
'@prisma/client-runtime-utils': 7.7.0
optionalDependencies:
prisma: 7.7.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)
prisma: 7.7.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)
typescript: 5.9.3
'@prisma/config@7.7.0':
@ -14624,7 +14625,8 @@ snapshots:
dependencies:
semver: 7.7.4
node-addon-api@8.7.0: {}
node-addon-api@8.7.0:
optional: true
node-cron@4.2.1: {}
@ -14649,7 +14651,8 @@ snapshots:
fetch-blob: 3.2.0
formdata-polyfill: 4.0.10
node-gyp-build@4.8.4: {}
node-gyp-build@4.8.4:
optional: true
node-int64@0.4.0: {}
@ -15059,7 +15062,7 @@ snapshots:
- react
- react-dom
prisma@7.7.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3):
prisma@7.7.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3):
dependencies:
'@prisma/config': 7.7.0
'@prisma/dev': 0.24.3(typescript@5.9.3)
@ -15975,12 +15978,14 @@ snapshots:
dependencies:
punycode: 2.3.1
tree-sitter-cli@0.26.8: {}
tree-sitter-cli@0.26.8:
optional: true
tree-sitter-python@0.25.0:
dependencies:
node-addon-api: 8.7.0
node-gyp-build: 4.8.4
optional: true
trim-lines@3.0.1: {}