Skip to content

Continuous Integration #687

Continuous Integration

Continuous Integration #687

Workflow file for this run

name: Continuous Integration
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch: ~
env:
CMAKE_CONFIG_TYPE: Release
CTEST_OUTPUT_ON_FAILURE: 1
CATCH_VERSION: '2.13.10'
jobs:
gcc:
strategy:
matrix:
version: [9, 10, 11, 13]
standard: [11, 20]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: seanmiddleditch/gha-setup-ninja@master
- name: ccache
uses: hendrikmuhs/[email protected]
- name: Install GCC ${{ matrix.version }}
run: |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
sudo apt update
sudo apt-get install -y gcc-${{ matrix.version }} g++-${{ matrix.version }}
- name: Configure (install)
env:
CC: gcc-${{ matrix.version }}
CXX: g++-${{ matrix.version }}
run: cmake -S . -B build/install -G Ninja
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache
-D CMAKE_CXX_STANDARD:STRING=${{ matrix.standard }}
-D CMAKE_BUILD_TYPE:STRING=Release
-D CMAKE_INSTALL_PREFIX=build/prefix
-D "CMAKE_PROJECT_FMT_INCLUDE_BEFORE=$(pwd)/cmake/fmtPICFix.cmake"
- name: Build (install)
run: cmake --build build/install -j $(nproc)
- name: Install
run: cmake --install build/install
- name: Configure tests
run: cmake -S tests -B build/tests -G Ninja
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache
-D CMAKE_BUILD_TYPE:STRING=Release
-D CPP-LAZY_CATCH_VERSION:STRING=${{ env.CATCH_VERSION }}
-D TEST_INSTALLED_VERSION:BOOL=YES
-D CMAKE_INSTALL_PREFIX=build/prefix
-D CMAKE_CXX_STANDARD:STRING=${{ matrix.standard }}
- name: Build tests
run: cmake --build build/tests -j $(nproc)
- name: Run tests
working-directory: build/tests
run: ctest --output-on-failure -VV
clang:
strategy:
matrix:
version: [14, 18]
standard: [11, 20]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: seanmiddleditch/gha-setup-ninja@master
- name: ccache
uses: hendrikmuhs/[email protected]
- name: Install Clang ${{ matrix.version }}
run: |
sudo wget -qO- https://apt.llvm.org/llvm.sh | sudo bash -s -- 18
sudo apt-get install -y clang-${{ matrix.version }}
- name: Configure (install)
env:
CC: clang-${{ matrix.version }}
CXX: clang-${{ matrix.version }}
run: |
if [ "${{ matrix.standard }}" == "20" ]; then
CXX_FLAGS="-stdlib=libc++"
else
CXX_FLAGS=""
fi
cmake -S . -B build/install -G Ninja \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
-D CMAKE_CXX_STANDARD:STRING=${{ matrix.standard }} \
-D "CMAKE_CXX_FLAGS=$CXX_FLAGS" \
-D CMAKE_BUILD_TYPE:STRING=Release \
-D CMAKE_INSTALL_PREFIX=build/prefix \
-D CMAKE_CXX_COMPILER=clang++ \
-D "CMAKE_PROJECT_FMT_INCLUDE_BEFORE=$(pwd)/cmake/fmtPICFix.cmake"
- name: Build (install)
run: cmake --build build/install -j $(nproc)
- name: Install
run: cmake --install build/install
- name: Configure tests
run: |
if [ "${{ matrix.standard }}" == "20" ]; then
CXX_FLAGS="-stdlib=libc++"
else
CXX_FLAGS=""
fi
cmake -S tests -B build/tests -G Ninja \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
-D CMAKE_BUILD_TYPE:STRING=Release \
-D "CMAKE_CXX_FLAGS=$CXX_FLAGS" \
-D CPP-LAZY_CATCH_VERSION:STRING=${{ env.CATCH_VERSION }} \
-D TEST_INSTALLED_VERSION:BOOL=YES \
-D CMAKE_CXX_COMPILER=clang++ \
-D CMAKE_INSTALL_PREFIX=build/prefix \
-D CMAKE_CXX_STANDARD:STRING=${{ matrix.standard }}
- name: Build tests
run: cmake --build build/tests -j $(nproc)
- name: Run tests
working-directory: build/tests
run: ctest -VV --output-on-failure
msvc:
strategy:
matrix:
os: [ windows-2019, windows-2022]
standard: [11, 20]
runs-on: ${{ matrix.os }}
steps:
# Using Ninja causes the test to fail on Github Actions
- uses: actions/checkout@v1
- name: Run sccache-cache
uses: mozilla/sccache-action@main
with:
version: "v0.3.3"
- name: Configure (install)
run: cmake -S . -B build/install
-D CMAKE_CXX_COMPILER_LAUNCHER=sccache
-D CMAKE_BUILD_TYPE:STRING=Release
-D CMAKE_INSTALL_PREFIX=build/prefix
-D CMAKE_CXX_STANDARD:STRING=${{ matrix.standard }}
- name: Build (install)
run: cmake --build build/install --config Release -j $env:NUMBER_OF_PROCESSORS
- name: Install
run: cmake --install build/install --config Release
- name: Configure tests
run: cmake -S tests -B build/tests
-D CMAKE_CXX_COMPILER_LAUNCHER=sccache
-D CPP-LAZY_CATCH_VERSION:STRING=$env:CATCH_VERSION
-D TEST_INSTALLED_VERSION:BOOL=YES
-D CMAKE_INSTALL_PREFIX=build/prefix
-D CMAKE_CXX_STANDARD:STRING=${{ matrix.standard }}
- name: Build tests
run: cmake --build build/tests --config Release -j $env:NUMBER_OF_PROCESSORS
- name: Run tests
working-directory: build/tests
run: ctest -C Release --output-on-failure -VV
examples:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: seanmiddleditch/gha-setup-ninja@master
- name: ccache
uses: hendrikmuhs/[email protected]
- name: Configure
run: cmake -S examples -B build/examples -G Ninja
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache
-D CMAKE_BUILD_TYPE:STRING=Release
- name: Build
run: cmake --build build/examples -j $(nproc)