name: Build & Test on: push: branches: [master] merge_group: pull_request: types: [ opened, reopened, synchronize, ready_for_review ] branches: [master] concurrency: group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.ref }} cancel-in-progress: ${{ github.event_name != 'merge_group' }} jobs: build: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] runs-on: ${{ matrix.os }} timeout-minutes: 30 steps: - uses: actions/checkout@v4.2.2 with: submodules: true - name: Setup .NET Core uses: actions/setup-dotnet@v4.1.0 with: dotnet-version: 10.0.x - name: Install dependencies run: dotnet restore - name: Build run: dotnet build --no-restore /p:WarningsAsErrors=nullable - name: Run tests shell: pwsh run: dotnet test --no-build -- NUnit.ConsoleOut=0 NUnit.TestOutputXml="logs" NUnit.WorkDirectory="$(pwd)/test_results" - name: Archive NUnit3 test results. if: always() uses: actions/upload-artifact@v4 with: name: nunit3-results-${{ matrix.os }} path: test_results/* retention-days: 7