Clarify product story for broad interview prep #22
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 | |
| - run: npm ci | |
| - name: Audit dependencies | |
| run: npm audit --audit-level=high | |
| continue-on-error: true | |
| - name: Lint | |
| run: npm run lint | |
| - name: Type check | |
| run: npm run typecheck | |
| - name: Run tests | |
| run: | | |
| npm run test:js | |
| python3 -m pytest plugin-tests/ -v | |
| - name: Build | |
| run: npm run build | |
| - 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 |