license: switch to All Rights Reserved — Source-Visible #2
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 | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| dashboard: | |
| name: Dashboard · Next build | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 8 | |
| defaults: | |
| run: | |
| working-directory: dashboard | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| cache: npm | |
| cache-dependency-path: dashboard/package-lock.json | |
| - name: Install | |
| run: npm ci | |
| - name: Build | |
| # Provide harmless placeholders so the dashboard's supabase client | |
| # initialiser doesn't throw at module-load during the build pass. | |
| env: | |
| NEXT_PUBLIC_SUPABASE_URL: https://example.supabase.co | |
| NEXT_PUBLIC_SUPABASE_ANON_KEY: placeholder-anon-key | |
| run: npm run build | |
| scraper: | |
| name: Scraper · syntax + import check | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| defaults: | |
| run: | |
| working-directory: scraper | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| cache: npm | |
| cache-dependency-path: scraper/package-lock.json | |
| - name: Install | |
| run: npm ci | |
| - name: Parse-check every source file | |
| # `node --check` doesn't follow imports, so for ESM we Just-Import | |
| # each file. Any unresolved import or syntax error blows up here. | |
| env: | |
| NEXT_PUBLIC_SUPABASE_URL: https://example.supabase.co | |
| NEXT_PUBLIC_SUPABASE_ANON_KEY: placeholder-anon-key | |
| run: | | |
| for f in src/*.js; do | |
| echo "→ checking $f" | |
| node --input-type=module -e "import('./$f').then(() => process.exit(0)).catch((e) => { console.error(e); process.exit(1); })" || exit 1 | |
| done |