Use same build and test action scripts for all OSes #177
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [ push, pull_request ] | |
jobs: | |
linux: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
image: | |
- "ubuntu:20.04" # gcc 9.3.0, clang 10.0.0, cmake 3.16.3 | |
- "ubuntu:22.04" # gcc 12.2.0, clang 15.0.7, cmake 3.24.2 | |
- "ubuntu:24.04" # gcc 14.2.0, clang 18.1.3, cmake 3.28.3 | |
- "debian:bullseye" # gcc 10.2.1, clang 11.0.1, cmake 3.18.4 | |
- "debian:bookworm" # gcc 12.2.0, clang 15.0.6, cmake 3.25.1 | |
- "debian:testing" | |
- "debian:experimental" | |
- "fedora:39" | |
- "fedora:40" | |
- "fedora:41" | |
build_type: [Dev] | |
cpp_compiler: [g++] | |
cpp_version: [c++14] | |
include: | |
- image: "ubuntu:24.04" | |
CXXFLAGS: -Wno-stringop-overread -Wno-array-bounds | |
- image: "debian:bullseye" | |
cpp_version: c++17 | |
- image: "debian:bullseye" | |
cpp_version: c++20 | |
- image: "debian:bullseye" | |
c_compiler: clang | |
cpp_compiler: clang++ | |
- image: "debian:bullseye" | |
c_compiler: clang | |
cpp_compiler: clang++ | |
cpp_version: c++17 | |
- image: "debian:bullseye" | |
c_compiler: clang | |
cpp_compiler: clang++ | |
cpp_version: c++20 | |
- image: "debian:bullseye" | |
build_type: RelWithDebInfo | |
- image: "debian:bookworm" | |
CXXFLAGS: -Wno-stringop-overread -Wno-array-bounds | |
- image: "debian:bookworm" | |
cpp_version: c++17 | |
CXXFLAGS: -Wno-stringop-overread -Wno-array-bounds | |
- image: "debian:bookworm" | |
cpp_version: c++20 | |
CXXFLAGS: -Wno-stringop-overread -Wno-array-bounds | |
- image: "debian:bookworm" | |
c_compiler: clang | |
cpp_compiler: clang++ | |
- image: "debian:bookworm" | |
c_compiler: clang | |
cpp_compiler: clang++ | |
cpp_version: c++17 | |
- image: "debian:bookworm" | |
c_compiler: clang | |
cpp_compiler: clang++ | |
cpp_version: c++20 | |
- image: "debian:bookworm" | |
build_type: RelWithDebInfo | |
CXXFLAGS: -Wno-stringop-overread -Wno-array-bounds | |
- image: "debian:testing" | |
CXXFLAGS: -Wno-stringop-overread -Wno-array-bounds | |
- image: "debian:testing" | |
c_compiler: clang | |
cpp_compiler: clang++ | |
- image: "debian:experimental" | |
CXXFLAGS: -Wno-stringop-overread -Wno-array-bounds | |
- image: "debian:experimental" | |
c_compiler: clang | |
cpp_compiler: clang++ | |
- image: "fedora:39" | |
CXXFLAGS: -Wno-stringop-overread -Wno-array-bounds | |
- image: "fedora:40" | |
CMAKE_OPTS: -DRUN_TESTS_WITH_BINARY_COMPARE=OFF | |
CXXFLAGS: -Wno-stringop-overread -Wno-array-bounds | |
- image: "fedora:41" | |
CMAKE_OPTS: -DRUN_TESTS_WITH_BINARY_COMPARE=OFF | |
CXXFLAGS: -Wno-stringop-overread -Wno-array-bounds | |
container: | |
image: ${{ matrix.image }} | |
env: | |
BUILD_TYPE: ${{ matrix.build_type }} | |
CMAKE_OPTS: ${{ matrix.CMAKE_OPTS }} | |
CC: ${{ matrix.c_compiler }} | |
CXX: ${{ matrix.cpp_compiler }} | |
CXXFLAGS: ${{ matrix.CXXFLAGS }} | |
LDFLAGS: ${{ matrix.LDFLAGS }} | |
CPP_VERSION: ${{ matrix.cpp_version }} | |
APT_LISTCHANGES_FRONTEND: none | |
DEBIAN_FRONTEND: noninteractive | |
steps: | |
- name: Prepare container (apt) | |
shell: bash | |
if: startsWith(matrix.image, 'debian:') || startsWith(matrix.image, 'ubuntu:') | |
run: | | |
apt-get update -qq | |
apt-get install -yq \ | |
clang \ | |
cmake \ | |
g++ \ | |
git \ | |
libboost-dev \ | |
libboost-program-options-dev \ | |
libbz2-dev \ | |
libexpat1-dev \ | |
liblz4-dev \ | |
make \ | |
nlohmann-json3-dev \ | |
pandoc \ | |
zlib1g-dev | |
- name: Install compiler | |
shell: bash | |
if: matrix.cpp_compiler == 'clang++-14' | |
run: apt-get install -yq --no-install-suggests --no-install-recommends clang-14 | |
- name: Prepare container (dnf) | |
shell: bash | |
if: startsWith(matrix.image, 'fedora:') | |
run: | | |
dnf install --quiet --assumeyes \ | |
boost-devel \ | |
bzip2-devel \ | |
cmake \ | |
expat-devel \ | |
gcc-c++ \ | |
git \ | |
json-devel \ | |
lz4-devel \ | |
make \ | |
pandoc \ | |
zlib-devel | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/install-from-git | |
- uses: ./.github/actions/cmake | |
- uses: ./.github/actions/build | |
- uses: ./.github/actions/ctest | |
ubuntu-latest: | |
runs-on: ubuntu-24.04 | |
timeout-minutes: 30 | |
env: | |
CC: clang-18 | |
CXX: clang++-18 | |
BUILD_TYPE: Dev | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/install-ubuntu | |
- uses: ./.github/actions/install-from-git | |
- uses: ./.github/actions/cmake | |
- uses: ./.github/actions/build | |
- uses: ./.github/actions/ctest | |
macos: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- macos-14 | |
- macos-15 | |
build_type: [Dev] | |
include: | |
- os: macos-14 | |
build_type: Release | |
env: | |
CC: clang | |
CXX: clang++ | |
BUILD_TYPE: ${{ matrix.build_type }} | |
steps: | |
- run: brew install boost nlohmann-json | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/install-from-git | |
- uses: ./.github/actions/cmake | |
- uses: ./.github/actions/build | |
- uses: ./.github/actions/ctest | |
windows: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- windows-2019 | |
- windows-2022 | |
steps: | |
- run: | | |
vcpkg install \ | |
boost-iterator:x64-windows \ | |
boost-program-options:x64-windows \ | |
boost-variant:x64-windows \ | |
bzip2:x64-windows \ | |
expat:x64-windows \ | |
lz4:x64-windows \ | |
nlohmann-json:x64-windows \ | |
zlib:x64-windows | |
shell: bash | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/install-from-git | |
- uses: ./.github/actions/cmake-windows | |
- uses: ./.github/actions/build | |
- uses: ./.github/actions/ctest |