Skip to content

Add GHA CI

Add GHA CI #48

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- master
- develop
- feature/**
- pr/**
concurrency:
group: ${{format('{0}:{1}', github.repository, github.ref)}}
cancel-in-progress: true
jobs:
posix:
strategy:
fail-fast: false
matrix:
include:
- compiler: g++-7
cxxstd: "17"
os: ubuntu-20.04
install: g++-7
- compiler: g++-8
cxxstd: "17"
os: ubuntu-20.04
install: g++-8
- compiler: g++-9
cxxstd: "17"
os: ubuntu-20.04
- compiler: g++-10
cxxstd: "17"
os: ubuntu-20.04
install: g++-10
- compiler: g++-11
cxxstd: "17"
os: ubuntu-22.04
install: g++-11
- compiler: g++-12
cxxstd: "17,20"
os: ubuntu-22.04
install: g++-12
- compiler: g++-13
cxxstd: "17,20"
os: ubuntu-24.04
install: g++-13
- compiler: clang++-6.0
cxxstd: "17"
os: ubuntu-latest
container: ubuntu:18.04
install: clang-6.0
- compiler: clang++-7
cxxstd: "17"
os: ubuntu-latest
container: ubuntu:18.04
install: clang-7
- compiler: clang++-8
cxxstd: "17"
os: ubuntu-20.04
install: clang-8
- compiler: clang++-9
cxxstd: "17"
os: ubuntu-20.04
install: clang-9
- compiler: clang++-10
cxxstd: "17"
os: ubuntu-20.04
- compiler: clang++-11
cxxstd: "17"
os: ubuntu-20.04
- compiler: clang++-12
cxxstd: "17"
os: ubuntu-20.04
- compiler: clang++-13
cxxstd: "17,20"
os: ubuntu-22.04
install: clang-13
- compiler: clang++-14
cxxstd: "17,20"
os: ubuntu-22.04
install: clang-14
- compiler: clang++-15
install: clang-15
cxxstd: "17,20"
os: ubuntu-22.04
- compiler: clang++-16
install: clang-16
cxxstd: "17,20"
os: ubuntu-24.04
- compiler: clang++-17
install: clang-17
cxxstd: "17,20"
os: ubuntu-24.04
- compiler: clang++-18
install: clang-18
cxxstd: "17,20"
os: ubuntu-24.04
# macos
- compiler: clang++
os: macos-12
cxxstd: "17,20"
- compiler: clang++
os: macos-13
cxxstd: "17,20"
- compiler: clang++
os: macos-14
cxxstd: "17,20"
runs-on: ${{matrix.os}}
container: ${{ matrix.container }}
steps:
- uses: actions/checkout@v3
- name: Install packages
if: matrix.install && matrix.container
run: apt-get update && apt-get -qq install -y ${{matrix.install}}
- name: Install packages
if: matrix.install && !matrix.container
run: sudo apt-get update && sudo apt-get -qq install -y ${{matrix.install}}
- name: Build and Run tests
shell: bash
run: |
mkdir build
cd build
standards=$(sed 's/,/ /g' <<<"${{matrix.cxxstd}}")
variants="debug release"
err=0
for standard in ${standards} ; do
for variant in ${variants} ; do
if [[ err -ne 0 ]] ; then
echo "skipping: ${standard} ${variant}"
else
echo "running: ${standard} ${variant}"
cmake --fresh -DCMAKE_CXX_COMPILER=${{matrix.compiler}} -DCMAKE_CXX_STANDARD=${standard} -DCMAKE_BUILD_TYPE=${variant} ..
cmake --build . --verbose
cd test
./main
cd -
err=$?
fi
done
done
[[ $err -ne 0 ]] && false || "true"