name: Build Website

on:
  push:
    branches:
      - main
    paths:
      - website/**
      - github_docs/**
      - .github/workflows/website-build.yml
  pull_request:
    branches:
      - main
    paths:
      - website/**
      - github_docs/**
      - .github/workflows/website-build.yml
  workflow_dispatch:

env:
  FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

concurrency:
  group: website-build-${{ github.ref }}
  cancel-in-progress: ${{ github.event_name == 'pull_request' }}

permissions:
  contents: read

jobs:
  build-website:
    name: Build 11ty Website
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4.1.7
        with:
          ssh-key: ${{ secrets.WEBSITE_DEPLOY_KEY }}

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "24"
          cache: npm
          cache-dependency-path: website/package-lock.json

      - name: Install dependencies
        working-directory: website
        run: npm ci

      - name: Build website
        working-directory: website
        run: npm run build
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Upload website artifact
        uses: actions/upload-artifact@v4.3.4
        with:
          name: kst4contest-website
          path: website/_site/
          retention-days: 7

      - name: Commit rebuilt site
        if: github.event_name == 'push' && github.ref == 'refs/heads/main'
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"
          git add website/_site
          if git diff --cached --quiet; then
            echo "No changes to commit"
          else
            git commit -m "chore: rebuild website [skip ci]"
            git push
          fi