Skip to content

Build & Test

Build & Test #126

Workflow file for this run

name: "Build & Test"
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
jobs:
build-test:
name: 'Build & Test: ${{matrix.cfg.name}}'
strategy:
fail-fast: false
matrix:
include:
- cfg: {name: 'macos', runson: 'macos-latest'}
- cfg: {name: 'gcc10', runson: 'ubuntu-latest', container: 'debian:bullseye'}
- cfg: {name: 'gcc11', runson: 'ubuntu-latest', container: 'ubuntu:jammy'}
- cfg: {name: 'gcc12', runson: 'ubuntu-latest', container: 'debian:bookworm'}
- cfg: {name: 'gcc-arch', runson: 'ubuntu-latest', container: 'archlinux'}
- cfg: {name: 'clang-UBSAN-arch', runson: 'ubuntu-latest', container: 'archlinux',
cmake: '-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS="-fsanitize=undefined -fno-sanitize-recover=all"'}
- cfg: {name: 'clang-ASAN-arch', runson: 'ubuntu-latest', container: 'archlinux',
cmake: '-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS=-fsanitize=address'}
runs-on: ${{matrix.cfg.runson}}
container: ${{matrix.cfg.container}}
steps:
- name: Arch packages
if: matrix.cfg.container == 'archlinux'
run: pacman --noconfirm -Syu && pacman --noconfirm -S base-devel boost cmake git clang llvm libc++
- name: Debian/Ubuntu packages
if: startsWith(matrix.cfg.container, 'debian') || startsWith(matrix.cfg.container, 'ubuntu')
run: apt-get update && apt-get -y upgrade && apt-get -y install build-essential cmake libboost-all-dev
- name: brew packages
if: matrix.cfg.name == 'macos'
run: brew install boost
- uses: actions/checkout@v4
- name: Build
run: cmake -B build ${{matrix.cfg.cmake}} && cmake --build build -- -j
- name: Test
run: cd build && ctest --output-on-failure
# some tests are ignored unless overcommit_memory is allowed
- name: Check Linux overcommit_memory settings
if: matrix.cfg.runson == 'ubuntu-latest'
run: grep -q 0 /proc/sys/vm/overcommit_memory