ci: add web build job to validate frontend on PRs#100
Conversation
The apps/web workspace was never built or typechecked in CI, so frontend-only changes could break the production build with nothing catching it. Add a Node-only web-build job: pnpm install, then build apps/web. Its prebuild hook generates and builds the TS client from the committed IDL, so no Rust/Solana toolchain is required.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryAdds a new
Confidence Score: 5/5Safe to merge — this is a purely additive CI workflow with no production code changes. The workflow is a straightforward, additive CI job using the same action versions and job structure already proven in this repository. No production code is modified, and the job structure is well-scoped. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Event triggered] --> B{Event type?}
B -->|push to main| C[Run web-build job]
B -->|pull_request| D{Paths filter match?}
D -->|No| E[Skip job]
D -->|Yes| C
C --> F[checkout v6]
F --> G[pnpm action-setup v6]
G --> H[setup-node v6 with .nvmrc]
H --> I[pnpm install]
I --> J[pnpm filter escrow-program-web build]
J --> K[prebuild: generate TS client from IDL]
K --> L[tsc and vite build]
L --> M{Result}
M -->|success| N[CI passes]
M -->|failure| O[CI fails]
Reviews (2): Last reviewed commit: "Apply suggestions from code review" | Re-trigger Greptile |
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Summary
web-buildjob (new.github/workflows/web.yml) that compilesapps/webon every PR.apps/webwas never built or typechecked in CI, so a frontend-only change could break the production build with nothing catching it.pnpm installthenpnpm --filter @solana/escrow-program-web build. The web app'sprebuildhook generates + builds the@solana/escrowTS client from the committed IDL.Test Plan
Verified the full chain locally, including cold start (client artifacts removed →
prebuildregenerates them):