name: Build · Site

# Builds the VitePress project site so a broken site change fails its PR.
# The dev-deploy / prod-build workflows build and ship the site
# separately; this is the fast PR gate. No `!**/*.md` exclusion — the
# site is Markdown, so content changes must be exercised too.

on:
  push:
    paths:
      - 'site/**'
      - '.gitea/workflows/site-build.yaml'
  pull_request:
    paths:
      - 'site/**'
      - '.gitea/workflows/site-build.yaml'

jobs:
  build:
    runs-on: ubuntu-latest
    defaults:
      run:
        shell: bash
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up pnpm
        uses: pnpm/action-setup@v4
        with:
          version: 11.0.7
          dest: ${{ runner.temp }}/setup-pnpm

      - name: Set up Node
        uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: pnpm
          cache-dependency-path: site/pnpm-lock.yaml

      - name: Install site dependencies
        working-directory: site
        run: pnpm install --frozen-lockfile

      - name: Build project site
        working-directory: site
        run: pnpm build
