blob: 297a626a8d2c083e392fa22876017263e186b8cc [file] [log] [blame]
name: Quick Tests
on:
pull_request:
paths-ignore:
- 'doc/**'
push:
branches:
- master
- 'release-*'
jobs:
Linux-musl:
runs-on: ubuntu-latest
container: alpine:latest
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: apk add autoconf automake build-base cmake libtool libucontext-dev linux-headers openssl-dev
- name: super-test
run: ./super-test.sh quick
Linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
compiler: [g++-7, g++-10, clang-6.0, clang-10]
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get install -y build-essential git zlib1g-dev cmake libssl-dev ${{ matrix.compiler }}
- name: super-test
run: |
./super-test.sh quick ${{ matrix.compiler }}
Linux-lock-tracking:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
compiler: [clang-9]
features: ["-DKJ_TRACK_LOCK_BLOCKING=1 -DKJ_SAVE_ACQUIRED_LOCK_INFO=1 -DKJ_CONTENTION_WARNING_THRESHOLD=200"]
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get install -y build-essential git zlib1g-dev cmake libssl-dev ${{ matrix.compiler }}
- name: super-test
run: |
# librt is used for timer_create in the unit tests for lock tracking (mutex-test.c++).
./super-test.sh quick ${{ matrix.compiler }} cpp-features "${{matrix.features}}" extra-libs "-lrt"
ManyLinux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- cross-compiler: manylinux2014-x64
- cross-compiler: manylinux2014-x86
docker-run-args: --platform linux/386
steps:
- uses: actions/checkout@v2
- name: install dockcross
run: |
docker run ${{ matrix.docker-run-args }} --rm dockcross/${{ matrix.cross-compiler }} > ./dockcross
chmod +x ./dockcross
- name: super-test
run: |
./dockcross ./super-test.sh quick g++
MacOS:
runs-on: macos-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: |
brew install autoconf automake libtool pkg-config
- name: super-test
run: |
./super-test.sh quick
MSVC:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ['windows-2016', 'windows-latest']
include:
- os: windows-2016
target: 'Visual Studio 15 2017'
arch: -A x64
- os: windows-latest
target: 'Visual Studio 16 2019'
arch: -A x64
steps:
- uses: actions/checkout@v2
- name: Include $CONDA in $PATH
run: |
echo "$Env:CONDA\condabin" >> $env:GITHUB_PATH
- name: Install dependencies via Conda
run: |
conda update -n base -c defaults -q conda
conda install -n base -c defaults -q ninja openssl zlib
- name: Build and test
shell: cmd
run: |
echo "Activate conda base environment"
call activate base
echo "Building Cap'n Proto with ${{ matrix.target }}"
cmake -Hc++ -Bbuild-output ${{ matrix.arch }} -G "${{ matrix.target }}" -DCMAKE_BUILD_TYPE=debug -DCMAKE_PREFIX_PATH="%CONDA_PREFIX%" -DCMAKE_INSTALL_PREFIX=%CD%\capnproto-c++-install
cmake --build build-output --config debug --target install
echo "Building Cap'n Proto samples with ${{ matrix.target }}"
cmake -Hc++/samples -Bbuild-output-samples ${{ matrix.arch }} -G "${{ matrix.target }}" -DCMAKE_BUILD_TYPE=debug -DCMAKE_PREFIX_PATH=%CD%\capnproto-c++-install
cmake --build build-output-samples --config debug
cd build-output\src
ctest -V -C debug
MinGW:
runs-on: windows-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: Build and test
shell: cmd
run: |
echo "Deleting broken Postgres install until https://github.com/actions/virtual-environments/issues/1089 is fixed..."
rmdir /s /q C:\PROGRA~1\POSTGR~1
echo "Building Cap'n Proto with MinGW"
cmake -Hc++ -Bbuild-output -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=%CD%\capnproto-c++-install -DCMAKE_SH="CMAKE_SH-NOTFOUND"
cmake --build build-output --target install -- -j2
echo "Building Cap'n Proto samples with MinGW"
cmake -Hc++/samples -Bbuild-output-samples -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=debug -DCMAKE_PREFIX_PATH=%CD%\capnproto-c++-install -DCMAKE_SH="CMAKE_SH-NOTFOUND"
cmake --build build-output-samples
cd build-output\src
ctest -V -C debug
# Cygwin:
# runs-on: windows-latest
# strategy:
# fail-fast: false
# steps:
# - run: git config --global core.autocrlf false
# - uses: actions/checkout@v2
# # TODO(someday): If we could cache the Cygwin installation we wouldn't have to spend three
# # minutes installing it for every build. Unfortuntaley, actions/cache@v1 does not preserve
# # DOS file attributes, which corrupts the Cygwin install. In particular, Cygwin marks
# # symlinks with the "DOS SYSTEM" attribute. We could cache just the downloaded packages,
# # but it turns out that only saves a couple seconds; most of the time is spend unpacking.
# - name: Install Cygwin
# run: |
# choco config get cacheLocation
# choco install --no-progress cygwin
# - name: Install Cygwin additional packages
# shell: cmd
# run: |
# C:\tools\cygwin\cygwinsetup.exe -qgnNdO -R C:/tools/cygwin -l C:/tools/cygwin/packages -s http://mirrors.kernel.org/sourceware/cygwin/ -P autoconf,automake,libtool,gcc,gcc-g++,binutils,libssl-devel,make,zlib-devel,pkg-config,cmake,xxd
# - name: Build and test
# shell: cmd
# run: |
# C:\tools\cygwin\bin\bash -lc 'export PATH=/usr/local/bin:/usr/bin:/bin; cd /cygdrive/d/a/capnproto/capnproto; ./super-test.sh quick'