Skip to content

Try to fix issue #991 #3093

Try to fix issue #991

Try to fix issue #991 #3093

Workflow file for this run

name: Test
on:
push:
branches:
- '**'
jobs:
# Build and test many combinations on Linux/OS X using Conan
posix-conan-test:
strategy:
matrix:
name: [clang-11, osx-gcc-10, gcc-10, clang-11-sanitize, clang-5, gcc-5, gcc-7, armv7]
include:
# Clang-11
- name: clang-11
compiler: clang
version: "11"
os: linux
arch: x86_64
build-type: Release
cc: clang
cxx: clang++
exceptions: "True"
generator: "Ninja"
int128: "True"
linux-container: johnmcfarlane/cnl_ci:clang-11-libcpp
os-version: ubuntu-20.04
sanitize: "False"
std: 17
stdlib: libc++
toolchain: clang-tidy-libc++.cmake
# OS X
- name: osx-gcc-10
os: osx
compiler: gcc
version: "10"
arch: x86_64
build-type: Release
cc: gcc-10
cxx: g++-10
exceptions: "True"
generator: "Ninja"
int128: "True"
os-version: macos-10.15
sanitize: "False"
std: 20
stdlib: libstdc++11
toolchain: gcc.cmake
# GCC-10
- name: gcc-10
compiler: gcc
version: "10"
os: linux
arch: x86_64
build-type: Release
cc: gcc-10
cxx: g++-10
exceptions: "True"
generator: "Ninja"
int128: "True"
linux-container: johnmcfarlane/cnl_ci:gcc-10
os-version: ubuntu-20.04
sanitize: "False"
std: 20
stdlib: libstdc++11
toolchain: gcc.cmake
# Sanitizers
- name: clang-11-sanitize
compiler: clang
version: "11"
os: linux
arch: x86_64
build-type: Release
cc: clang
cxx: clang++
exceptions: "True"
generator: "Ninja"
int128: "True"
linux-container: johnmcfarlane/cnl_ci:clang-11-libcpp
os-version: ubuntu-20.04
sanitize: "True"
std: 17
stdlib: libc++
toolchain: clang-libc++.cmake
# Clang-5
- name: clang-5
compiler: clang
version: "5.0"
os: linux
arch: x86_64
build-type: Release
cc: clang
cxx: clang++
exceptions: "True"
generator: "Ninja"
int128: "True"
linux-container: johnmcfarlane/cnl_ci:clang-5-libstdcpp
os-version: ubuntu-20.04
sanitize: "False"
std: 11
stdlib: libstdc++11
toolchain: clang.cmake
# GCC-5
- name: gcc-5
compiler: gcc
version: "5"
os: linux
arch: x86_64
build-type: Release
cc: gcc-5
cxx: g++-5
exceptions: "True"
generator: "Ninja"
int128: "True"
linux-container: johnmcfarlane/cnl_ci:gcc-5
os-version: ubuntu-20.04
sanitize: "False"
std: 11
stdlib: libstdc++11
toolchain: gcc.cmake
# Contrary
- name: gcc-7
cxx: g++-7
cc: gcc-7
version: "7"
exceptions: "False"
int128: "False"
os: linux
arch: x86_64
build-type: Debug
compiler: gcc
generator: "Unix Makefiles"
linux-container: johnmcfarlane/cnl_ci:gcc-7
os-version: ubuntu-18.04
sanitize: "False"
std: 14
stdlib: libstdc++11
toolchain: gcc.cmake
# ARMv7
- name: armv7
arch: armv7
compiler: gcc
version: "10"
os: linux
build-type: Release
cc: arm-linux-gnueabi-gcc-10
cxx: arm-linux-gnueabi-g++-10
exceptions: "True"
generator: "Ninja"
int128: "False"
linux-container: johnmcfarlane/cnl_ci:gcc-10-arm
os-version: ubuntu-20.04
sanitize: "False"
std: 20
stdlib: libstdc++11
toolchain: gcc-armv7.cmake
container: ${{matrix.linux-container}}
env:
CC: ${{matrix.cc}}
CXX: ${{matrix.cxx}}
runs-on: ${{matrix.os-version}}
steps:
- uses: actions/checkout@v2
- name: Install Brew packages
if: ( matrix.os == 'osx' )
run: brew install conan gcc@10 ninja
- name: Initialise Conan
run: |
conan profile new default --detect && \
conan profile update settings.compiler=${{matrix.compiler}} default && \
conan profile update settings.compiler.cppstd=${{matrix.std}} default && \
conan profile update settings.compiler.libcxx=${{matrix.stdlib}} default && \
conan profile update settings.compiler.version=${{matrix.version}} default && \
conan profile update settings.arch=${{matrix.arch}} default
- name: Install dependencies
run: |
conan install \
--build=missing \
--env CONAN_CMAKE_GENERATOR="${{matrix.generator}}" \
--env CONAN_CMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/test/cmake/toolchain/${{matrix.toolchain}} \
--options int128=${{matrix.int128}} \
--options enable_exceptions=${{matrix.exceptions}} \
--options sanitize=${{matrix.sanitize}} \
--options target=test-all \
$GITHUB_WORKSPACE
- name: Build tests
run: conan build --build --configure $GITHUB_WORKSPACE
- name: Test library
if: ( matrix.arch != 'armv7' )
run: conan build --test $GITHUB_WORKSPACE
- name: Run benchmarks
if: (matrix.name=='clang-11' || matrix.name=='gcc-10')
run: |
./test/benchmark/test-benchmark --benchmark_format=csv | tee result.csv \
"${GITHUB_WORKSPACE}"/test/benchmark/report.py result.csv
# Build and test on Windows using Conan
windows-conan-test:
runs-on: windows-2019
strategy:
matrix:
arch: [x86_64, x86]
include:
- arch: x86_64
cmake_arch: x64
exceptions: "True"
msbuild_property: x64
- arch: x86
cmake_arch: Win32
exceptions: "False"
msbuild_property: win32
steps:
- uses: actions/checkout@v2
- name: Initialise Conan
run: |
pip.exe install conan;
conan profile new default;
conan profile update settings.compiler="Visual Studio" default;
conan profile update settings.os=Windows default;
conan profile update settings.arch=${{matrix.arch}} default;
conan profile update settings.compiler.version=16 default
- name: Create build directory
run: mkdir ${{runner.workspace}}\build
- name: Install dependencies
working-directory: ${{runner.workspace}}/build
run: |
conan install `
--build=missing `
--env CONAN_CMAKE_GENERATOR="Visual Studio 16 2019" `
--env CONAN_CMAKE_TOOLCHAIN_FILE="$env:GITHUB_WORKSPACE"\test\cmake\toolchain\msvc.cmake `
--options enable_exceptions=${{matrix.exceptions}} `
--options target=test-all `
--settings build_type=Release `
$env:GITHUB_WORKSPACE
- name: Build and run tests
working-directory: ${{runner.workspace}}/build
run: conan build --build --configure --test $env:GITHUB_WORKSPACE
- name: Run benchmarks
working-directory: ${{runner.workspace}}/build
run: test\benchmark\Release\test-benchmark.exe
# Build and test latest on Linux using only CMake
linux-cmake-test:
strategy:
matrix:
compiler: [clang-head, gcc-head]
include:
- compiler: clang-head
toolchain: clang.cmake
container: johnmcfarlane/cnl_ci:clang-head-libstdcpp
- compiler: gcc-head
toolchain: gcc.cmake
container: johnmcfarlane/cnl_ci:gcc-head
container: ${{matrix.container}}
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Build and Install GTest
run: |
git clone https://github.com/google/googletest.git && \
cd googletest && \
git checkout 3c95bf552405fd0cc63cea0ca2f6c4cd89c8d356 && \
cmake \
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=$GITHUB_WORKSPACE/test/cmake/toolchain/${{matrix.toolchain}} \
. && \
cmake --build . --target install
- name: Configure CNL
run: |
cmake \
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=$GITHUB_WORKSPACE/test/cmake/toolchain/${{matrix.toolchain}} \
$GITHUB_WORKSPACE
- name: Build CNL
run: cmake --build $GITHUB_WORKSPACE --target test-all
- name: Test CNL
run: ctest --output-on-failure
# Install on mature Linux distro using only CMake
linux-cmake-install:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Configure CNL
run: cmake $GITHUB_WORKSPACE
- name: Install CNL
run: sudo cmake --build $GITHUB_WORKSPACE --target install
# Test shell scripts
shellcheck:
runs-on: ubuntu-20.04
container: johnmcfarlane/cnl_ci:base-20.04
steps:
- uses: actions/checkout@v2
- name: Run All Tests
shell: bash
run: $GITHUB_WORKSPACE/test/scripts/shellcheck
# Test documentation generation
doxygen:
runs-on: ubuntu-18.04
container: johnmcfarlane/cnl_ci:gcc-10
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
submodules: true
- name: Generate documentation
shell: bash
run: $GITHUB_WORKSPACE/doc/generate
- name: Upload documentation
uses: actions/upload-artifact@v2
with:
name: documentation
path: ${{github.workspace}}/htdocs