name: Build

on: [push, pull_request]

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

permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        include:
          - name: Regular, with coverage
            WITH_ASAN: "false"
            WITH_COVERAGE: "true"

          - name: Address_sanitizer
            WITH_ASAN: "true"
            WITH_COVERAGE: "false"

    name: ${{ matrix.name }}

    steps:
      - name: Checkout repository contents
        uses: actions/checkout@v5

      - name: Build
        run: |
            docker run \
            -e WORK_DIR="$PWD" \
            -e WITH_ASAN="${{ matrix.WITH_ASAN }}" \
            -e WITH_COVERAGE="${{ matrix.WITH_COVERAGE }}" \
            -v $PWD:$PWD ubuntu:24.04 $PWD/.github/workflows/start.sh

      - name: Coveralls
        uses: coverallsapp/github-action@v2
        if: ${{ matrix.WITH_COVERAGE == 'true' }}
        with:
          format: lcov
          file: mapserver.info
