name: native and cross on: [push, pull_request] jobs: build: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: release: - "ubuntu:20.04" - "ubuntu:22.04" - "ubuntu:24.04" - "ubuntu:rolling" - "debian:oldstable-slim" - "debian:stable-slim" - "debian:testing-slim" - "debian:unstable-slim" steps: - uses: actions/checkout@v4 - name: Prepare ${{ matrix.release }} container run: | podman version podman run --name stable -di --userns=keep-id:uid=1000,gid=1000 -v "$PWD":/home -w /home ${{ matrix.release }} bash podman exec -i stable uname -a podman exec -i stable id podman exec -i -u root stable apt update podman exec -e DEBIAN_FRONTEND='noninteractive' -i -u root stable apt install -o APT::Install-Suggests=false -qy \ clang \ cmake \ gcc \ make - name: Configure & Build with gcc env: cc: gcc run: | podman exec -i stable cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=${cc} -DENABLE_WERROR=ON -B build-${cc} podman exec -i stable cmake --build build-${cc} - name: Configure & Build with clang env: cc: clang run: | podman exec -i stable cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=${cc} -DENABLE_WERROR=ON -B build-${cc} podman exec -i stable cmake --build build-${cc} - name: Show logs if: ${{ failure() }} run: | for log in build-*/CMakeFiles/{CMakeOutput.log,CMakeConfigureLog.yaml}; do \ if [ -e ${log} ]; then \ echo "---------------- ${log} ----------------"; \ cat ${log}; \ fi; \ done