Merge pull request #631 from egecetin/master #134
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] | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
tests: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: ["ubuntu-20.04"] | |
cppstd: ["98", "11", "20"] | |
cc: ["gcc-10"] | |
cxx: ["g++-10"] | |
drafts: ["ON"] | |
libzmq: ["4.3.4"] | |
libzmqbuild: ["cmake"] | |
include: | |
# older libzmq and without draft | |
- os: "ubuntu-20.04" | |
cppstd: "11" | |
cc: "gcc-9" | |
cxx: "g++-9" | |
drafts: "OFF" | |
libzmq: "4.2.0" | |
libzmqbuild: "pkgconfig" | |
# without draft | |
- os: "ubuntu-22.04" | |
cppstd: "20" | |
cc: "gcc-11" | |
cxx: "g++-11" | |
drafts: "OFF" | |
libzmq: "4.3.4" | |
libzmqbuild: "cmake" | |
# coverage (gcc version should match gcov version) | |
- os: "ubuntu-20.04" | |
cppstd: "17" | |
cc: "gcc-9" | |
cxx: "g++-9" | |
drafts: "ON" | |
libzmq: "4.3.4" | |
libzmqbuild: "cmake" | |
coverage: "-DCOVERAGE=ON" | |
aptinstall: "lcov" | |
# clang | |
- os: "ubuntu-20.04" | |
cppstd: "17" | |
cc: "clang-12" | |
cxx: "clang++-12" | |
drafts: "ON" | |
libzmq: "4.3.4" | |
libzmqbuild: "cmake" | |
# macos | |
- os: "macos-latest" | |
cppstd: "17" | |
cc: "clang" | |
cxx: "clang++" | |
drafts: "OFF" | |
libzmq: "4.3.4" | |
libzmqbuild: false | |
brewinstall: "zeromq" | |
# windows | |
- os: "windows-2019" | |
cppstd: "14" | |
cc: "msbuild" | |
cxx: "msbuild" | |
drafts: "ON" | |
libzmq: "4.3.4" | |
libzmqbuild: "cmake" | |
platform: "-Ax64" | |
- os: "windows-2022" | |
cppstd: "20" | |
cc: "msbuild" | |
cxx: "msbuild" | |
drafts: "ON" | |
libzmq: "4.3.4" | |
libzmqbuild: "cmake" | |
platform: "-Ax64" | |
env: | |
CC: ${{ matrix.cc }} | |
CXX: ${{ matrix.cxx }} | |
VERBOSE: 1 | |
THREADS: 2 | |
BUILDTYPE: "Debug" | |
steps: | |
- uses: actions/checkout@v2 | |
- name: install_deps | |
run: | | |
if [ ! -z "${{ matrix.aptinstall }}" ]; then | |
sudo apt install -y ${{ matrix.aptinstall }} | |
fi | |
if [ ! -z "${{ matrix.brewinstall }}" ]; then | |
brew install ${{ matrix.brewinstall }} | |
fi | |
- name: get_libzmq | |
run: | | |
curl -L https://github.com/zeromq/libzmq/archive/v${{ matrix.libzmq }}.tar.gz \ | |
>zeromq.tar.gz | |
tar -xvzf zeromq.tar.gz | |
- name: build_libzmq_cmake | |
if: ${{ matrix.libzmqbuild == 'cmake' }} | |
run: | | |
cmake -Hlibzmq-${{ matrix.libzmq }} -Blibzmq-build ${{ matrix.platform}} \ | |
-DWITH_PERF_TOOL=OFF \ | |
-DZMQ_BUILD_TESTS=OFF \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DENABLE_DRAFTS=${{ matrix.drafts }} | |
cmake --build libzmq-build --config ${BUILDTYPE} -j ${THREADS} | |
echo "LIBZMQ=${PWD}/libzmq-build" >> ${GITHUB_ENV} | |
- name: build_libzmq_pkgconfig | |
if: ${{ matrix.libzmqbuild == 'pkgconfig' }} | |
working-directory: libzmq-${{ matrix.libzmq }} | |
run: | | |
./autogen.sh && | |
./configure --prefix=${PWD}/libzmq-build && | |
make -j ${THREADS} | |
make install | |
echo "LIBZMQ=${PWD}/libzmq-build" >> ${GITHUB_ENV} | |
- name: build | |
env: | |
CMAKE_PREFIX_PATH: ${{ env.LIBZMQ }} | |
run: | | |
cmake -H. -Bbuild ${{ matrix.platform}} ${{ matrix.coverage }} \ | |
-DCMAKE_BUILD_TYPE=${BUILDTYPE} \ | |
-DENABLE_DRAFTS=${{ matrix.drafts }} \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.cppstd }} | |
cmake --build build --config ${BUILDTYPE} -j ${THREADS} | |
echo "CPPZMQ=${PWD}/build" >> ${GITHUB_ENV} | |
- name: test | |
# for unknown reason no tests are found and run on windows | |
# could be something to do with catch_discover_tests not working? | |
run: | | |
cd ${{ env.CPPZMQ }} | |
ctest -V -C ${BUILDTYPE} | |
- name: demo | |
# probably need to install libzmq and cppzmq for this to work on windows | |
if: ${{ matrix.os == 'ubuntu*' }} | |
env: | |
CMAKE_PREFIX_PATH: ${{ env.LIBZMQ }}:${{ env.CPPZMQ }} | |
run: | | |
cd demo | |
cmake -H. -Bbuild ${{ matrix.platform}} \ | |
-DCMAKE_BUILD_TYPE=${BUILDTYPE} \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.cppstd }} | |
cmake --build build --config ${BUILDTYPE} | |
cd build | |
ctest -V -C ${BUILDTYPE} | |
- name: lcov | |
if: ${{ matrix.coverage && success() }} | |
run: | | |
lcov --capture --directory . --output-file coverage.info | |
lcov --remove coverage.info -o coverage_filtered.info \ | |
'/usr/include/*' \ | |
'/usr/local/include/*' \ | |
${PWD}'/tests/*' \ | |
${PWD}'/build/*' | |
# to generate local html: genhtml coverage_filtered.info --output-directory . | |
- name: coveralls_upload | |
if: ${{ matrix.coverage && success() }} | |
uses: coverallsapp/github-action@master | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
path-to-lcov: ./coverage_filtered.info |