name: Build and Test on Pull Request

on:
  pull_request:
    types: [opened, reopened, synchronize]
    branches:
      - main
    paths:
      - 'src/**'
      - 'pom.xml'

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

jobs:
  build:
    name: Build Java Project
    runs-on: ubuntu-latest
    permissions:
      contents: read

    steps:
      - uses: actions/checkout@v5
      - name: Set up JDK 11
        uses: actions/setup-java@v5
        with:
          java-version: '11'
          distribution: 'adopt-hotspot'
          server-id: github
          settings-path: ${{ github.workspace }}

      - name: Build with Maven
        run: mvn --file pom.xml -U clean package

  run-tests:
    name: Run Unit and Integration Tests
    needs: build
    uses: ./.github/workflows/run-tests.yml
    with:
      branch: ${{ github.head_ref || github.ref_name }}

  build-docs:
    name: Build Documentation
    needs: [build, run-tests]
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v5
      - name: Use Node.js
        uses: actions/setup-node@v5
        with:
          node-version: '20.x'
      - run: cd docs && npm ci
      - run: cd docs && npm run build
