name: Build Test

on: [push, pull_request]

jobs:
  build-debian-stable:
    name: Debian Stable
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3

    - name: Create Build Environment
      run: cd tests/ci/ && podman build -t appstream -f ./Dockerfile-debian-stable .

    - name: Build
      run: podman run -a stdout -a stderr -e COMPILER_VENDOR=$CVENDOR -e CC=gcc -e CXX=g++ -v `pwd`:/build appstream
           ./tests/ci/run-build.sh

    - name: Test
      run: podman run -a stdout -a stderr -e COMPILER_VENDOR=$CVENDOR -e CC=gcc -e CXX=g++ -v `pwd`:/build appstream
           ./tests/ci/run-tests.sh


  build-debian-testing:
    name: Debian Testing
    runs-on: ubuntu-24.04
    steps:
    - uses: actions/checkout@v3

    - name: Create Build Environment
      run: cd tests/ci/ && podman build -t appstream -f ./Dockerfile-debian-testing .

    - name: Build
      run: podman run -a stdout -a stderr -e COMPILER_VENDOR=$CVENDOR -e CC=gcc -e CXX=g++ -v `pwd`:/build appstream
           ./tests/ci/run-build.sh

    - name: Test
      run: podman run -a stdout -a stderr -e COMPILER_VENDOR=$CVENDOR -e CC=gcc -e CXX=g++ -v `pwd`:/build appstream
           ./tests/ci/run-tests.sh


  build-fedora-latest:
    name: Fedora Latest Stable
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3

    - name: Create Build Environment
      run: cd tests/ci/ && podman build -t appstream -f ./Dockerfile-fedora-latest .

    - name: Build
      run: podman run -a stdout -a stderr -e COMPILER_VENDOR=$CVENDOR -e CC=gcc -e CXX=g++ -v `pwd`:/build appstream
           ./tests/ci/run-build.sh

    - name: Test
      run: podman run -a stdout -a stderr -e COMPILER_VENDOR=$CVENDOR -e CC=gcc -e CXX=g++ -v `pwd`:/build appstream
           ./tests/ci/run-tests.sh


  build-fedora-rawhide:
    name: Fedora Rawhide
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3

    - name: Create Build Environment
      run: cd tests/ci/ && podman build -t appstream -f ./Dockerfile-fedora-rawhide .

    - name: Build
      continue-on-error: true  # with a Git snapshot of GCC, this build is exceptionally flaky
      run: podman run -a stdout -a stderr -e COMPILER_VENDOR=$CVENDOR -e CC=gcc -e CXX=g++ -v `pwd`:/build appstream
           ./tests/ci/run-build.sh

    - name: Test
      continue-on-error: true  # with a Git snapshot of GCC, this build is exceptionally flaky
      run: podman run -a stdout -a stderr -e COMPILER_VENDOR=$CVENDOR -e CC=gcc -e CXX=g++ -v `pwd`:/build appstream
           ./tests/ci/run-tests.sh


  build-ubuntu:
    name: Ubuntu LTS
    runs-on: ubuntu-22.04
    steps:
    - uses: actions/checkout@v3

    - name: Create Build Environment
      run: sudo ./tests/ci/install-deps-deb.sh

    - name: Update Meson
      run: sudo pip install 'meson~=0.62'

    - name: Build
      run: CC=gcc CXX=g++ ./tests/ci/run-build.sh

    - name: Test
      run: CC=gcc CXX=g++ ./tests/ci/run-tests.sh


  build-sanitized-debian:
    name: Sanitizers on Debian
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3

    - name: Create Build Environment
      run: cd tests/ci/ && podman build -t appstream -f ./Dockerfile-debian-testing .

    - name: Build with asan, ubsan
      run: podman run -a stdout -a stderr --privileged -e COMPILER_VENDOR=$CVENDOR -e CC=gcc -e CXX=g++ -v `pwd`:/build appstream
           ./tests/ci/run-build.sh sanitize

    - name: Test with asan, ubsan
      run: podman run -a stdout -a stderr --privileged -e COMPILER_VENDOR=$CVENDOR -e CC=gcc -e CXX=g++ -v `pwd`:/build appstream
           ./tests/ci/run-tests.sh sanitize


  build-sanitized-fedora:
    name: Sanitizers on Fedora
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3

    - name: Create Build Environment
      run: cd tests/ci/ && podman build -t appstream -f ./Dockerfile-fedora-latest .

    - name: Build with asan, ubsan
      run: podman run -a stdout -a stderr --privileged -e COMPILER_VENDOR=$CVENDOR -e CC=gcc -e CXX=g++ -v `pwd`:/build appstream
           ./tests/ci/run-build.sh sanitize

    - name: Test with asan, ubsan
      run: podman run -a stdout -a stderr --privileged -e COMPILER_VENDOR=$CVENDOR -e CC=gcc -e CXX=g++ -v `pwd`:/build appstream
           ./tests/ci/run-tests.sh sanitize
