name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build-and-test:
    name: Build & Test (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    continue-on-error: true
    strategy:
      matrix:
        os: [ windows-2022, ubuntu-22.04, macos-13 ]

    steps:
    - uses: actions/checkout@v4
      with:
        submodules: true
    - name: Add msbuild to PATH (Windows only)
      if: ${{ matrix.os == 'windows-2022' }}
      uses: microsoft/setup-msbuild@v2
      with:
        vs-version: '[17,18)'
        msbuild-architecture: x64
    - name: Install libssl and switch to XCode 15.2 (Mac Only)
      if: ${{ matrix.os == 'macos-13' }}
      run: |
        brew install openssl@3
        sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer
    - name: cmake
      uses: lukka/run-cmake@v10
      with:
        workflowPreset: "ci-${{matrix.os}}"
    - name: artifacts
      uses: actions/upload-artifact@v4
      with:
        name: build-${{matrix.os}}
        path: |
          build/*/*Server*
          build/*/*.ini
          build/*/*.so
          build/*/*.dll
          build/*/vanity/
          build/*/navmeshes/
          build/*/migrations/
          build/*/*.dcf
          !build/*/*.pdb
          !build/*/d*/