1name: deploy
2on:
3 push:
4 branches: [main]
5 workflow_dispatch:
7permissions:
8 contents: read
9 pages: write
10 id-token: write
12concurrency:
13 group: pages
14 cancel-in-progress: true
16jobs:
17 build-deploy:
18 runs-on: ubuntu-latest
19 environment:
20 name: github-pages
21 url: ${{ steps.deployment.outputs.page_url }}
22 steps:
23 - uses: actions/checkout@v4
24 - uses: actions/setup-node@v4
25 with:
26 node-version: 24
27 cache: npm
28 - run: npm ci
29 # `build` runs tsc --noEmit first, so this is the type check too. The
30 # smoke test is not run here: it needs a WebGPU-capable headless Chrome,
31 # which this runner cannot reliably provide. Run `npm run smoke` locally
32 # before pushing.
33 - run: npm run build
34 # Pages must already be enabled with "GitHub Actions" as the source; the
35 # workflow token cannot create the site itself.
36 - uses: actions/configure-pages@v5
37 - uses: actions/upload-pages-artifact@v3
38 with:
39 path: dist
40 - id: deployment
41 uses: actions/deploy-pages@v4