name: Website

on:
  pull_request:
    paths:
      - ".github/workflows/website.yml"
      - "website/**"
      - "docs/next/website/**"
      - "docs/preview/**"
      - "docs/versions/**"
      - "scripts/test_preview.py"
  push:
    branches: [master]
    paths:
      - ".github/workflows/website.yml"
      - "website/**"
      - "docs/next/website/**"
      - "docs/preview/**"
      - "docs/versions/**"
      - "scripts/test_preview.py"

permissions:
  contents: read

concurrency:
  group: website-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - name: Checkout
        uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
        with:
          fetch-depth: 0
          persist-credentials: false

      - name: Install Bun
        uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
        with:
          bun-version: 1.3.14

      - name: Validate published documentation
        run: |
          node website/scripts/docs-versions.mjs check
          node website/scripts/docs-preview.mjs check

      - name: Build published website
        run: cd website && bun install --frozen-lockfile && bun run build

      - name: Validate unpublished draft
        run: cd website && bun run build:draft
