Load prep routes on demand #32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI + Deploy to GitHub Pages | |
| on: | |
| push: | |
| branches: ["main"] | |
| pull_request: | |
| branches: ["main"] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| concurrency: | |
| group: "pages" | |
| cancel-in-progress: false | |
| jobs: | |
| quality: | |
| name: Lint + Typecheck + Test + Build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| - run: npm ci | |
| - name: Audit dependencies | |
| run: npm audit --audit-level=high | |
| continue-on-error: true | |
| - name: Verify app and backend | |
| run: npm run verify | |
| - name: Check bundle size | |
| run: | | |
| JS_SIZE=$(stat -c %s dist/assets/index-*.js 2>/dev/null || stat -f %z dist/assets/index-*.js) | |
| CSS_SIZE=$(stat -c %s dist/assets/index-*.css 2>/dev/null || stat -f %z dist/assets/index-*.css) | |
| echo "JS bundle: $JS_SIZE bytes ($(echo "scale=2; $JS_SIZE/1024" | bc)KB)" | |
| echo "CSS bundle: $CSS_SIZE bytes ($(echo "scale=2; $CSS_SIZE/1024" | bc)KB)" | |
| if [ "$JS_SIZE" -gt 524288 ]; then echo "::error::JS bundle exceeds 512KB"; exit 1; fi | |
| if [ "$CSS_SIZE" -gt 102400 ]; then echo "::error::CSS bundle exceeds 100KB"; exit 1; fi | |
| deploy: | |
| if: github.ref == 'refs/heads/main' | |
| needs: quality | |
| runs-on: ubuntu-latest | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - run: npm ci | |
| - run: npm run build | |
| - uses: actions/upload-pages-artifact@v3 | |
| with: | |
| path: dist | |
| - id: deployment | |
| uses: actions/deploy-pages@v4 |