diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..2745ca710 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,95 @@ +name: poco-ci +on: [push] +jobs: + linux-gcc-make: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - run: sudo apt update && sudo apt install libssl-dev unixodbc-dev libmysqlclient-dev redis-server + - run: ./configure --everything --omit=PDF && make all -s -j4 && sudo make install + - run: >- + sudo -s + EXCLUDE_TESTS="Data/MySQL Data/ODBC Data/PostgreSQL MongoDB" + ./ci/runtests.sh + + linux-gcc-make-asan: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - run: sudo apt update && sudo apt install libssl-dev unixodbc-dev libmysqlclient-dev redis-server + - run: ./configure --everything --omit=PDF && make all -s -j4 SANITIZEFLAGS=-fsanitize=address && sudo make install + - run: >- + sudo -s + EXCLUDE_TESTS="Data/MySQL Data/ODBC Data/PostgreSQL MongoDB" + ./ci/runtests.sh + + linux-gcc-make-ubsan: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - run: sudo apt update && sudo apt install libssl-dev unixodbc-dev libmysqlclient-dev redis-server + - run: ./configure --everything --omit=PDF && make all -s -j4 SANITIZEFLAGS=-fsanitize=undefined && sudo make install + - run: >- + sudo -s + EXCLUDE_TESTS="Data/MySQL Data/ODBC Data/PostgreSQL MongoDB" + ./ci/runtests.sh + + linux-gcc-cmake: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - run: sudo apt update && sudo apt install cmake ninja-build libssl-dev unixodbc-dev libmysqlclient-dev redis-server + - run: cmake -H. -Bcmake-build -GNinja -DENABLE_PDF=OFF -DENABLE_TESTS=ON && cmake --build cmake-build --target all + - run: >- + cd cmake-build && + sudo -s + PWD=`pwd` + ctest --output-on-failure -E "(DataMySQL)|(DataODBC)|(PostgreSQL)|(MongoDB)" + + linux-gcc-make-cross-armhf: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - run: >- + sudo apt-get update && + sudo apt-get install crossbuild-essential-armhf + - run: >- + ./configure --config=ARM-Linux --everything --omit=PDF,Crypto,NetSSL_OpenSSL,JWT,Data/MySQL,Data/ODBC,Data/PostgreSQL && + make all -s -j4 ARCHFLAGS="-mcpu=cortex-a8 -mfloat-abi=hard -mfpu=neon" TOOL=arm-linux-gnueabihf + + macos-clang-make: + runs-on: macos-10.15 + steps: + - uses: actions/checkout@v2 + - run: brew install openssl mysql-client unixodbc libpq + - run: ./configure --everything --no-prefix --omit=PDF --odbc-include=/usr/local/opt/unixodbc/include --odbc-lib=/usr/local/opt/unixodbc/lib && make all -s -j4 + - run: >- + sudo -s + CPPUNIT_IGNORE="N7CppUnit10TestCallerI10ThreadTestEE.testTrySleep,N7CppUnit10TestCallerI13TimestampTestEE.testTimestamp,N7CppUnit10TestCallerI18ExpireLRUCacheTestEE.testExpireN,N7CppUnit10TestCallerI18ExpireLRUCacheTestEE.testAccessExpireN,N7CppUnit10TestCallerI24UniqueExpireLRUCacheTestEE.testExpireN,N7CppUnit10TestCallerI18ExpireLRUCacheTestEE.testAccessExpireN,N7CppUnit10TestCallerI11PollSetTestEE.testPollClosedServer" + EXCLUDE_TESTS="Redis Data/MySQL Data/ODBC Data/PostgreSQL MongoDB PDF" + ./ci/runtests.sh + + macos-clang-cmake: + runs-on: macos-10.15 + steps: + - uses: actions/checkout@v2 + - run: brew install openssl mysql-client unixodbc libpq + - run: cmake -H. -Bcmake-build -DENABLE_PDF=OFF -DENABLE_TESTS=ON -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DMYSQL_ROOT_DIR=/usr/local/opt/mysql-client && cmake --build cmake-build --target all + - run: >- + cd cmake-build && + sudo -s + CPPUNIT_IGNORE="N7CppUnit10TestCallerI10ThreadTestEE.testTrySleep,N7CppUnit10TestCallerI13TimestampTestEE.testTimestamp,N7CppUnit10TestCallerI18ExpireLRUCacheTestEE.testExpireN,N7CppUnit10TestCallerI18ExpireLRUCacheTestEE.testAccessExpireN,N7CppUnit10TestCallerI24UniqueExpireLRUCacheTestEE.testExpireN,N7CppUnit10TestCallerI18ExpireLRUCacheTestEE.testAccessExpireN,N7CppUnit10TestCallerI11PollSetTestEE.testPollClosedServer" + PWD=`pwd` + ctest --output-on-failure -E "(DataMySQL)|(DataODBC)|(PostgreSQL)|(MongoDB)|(Redis)" + + windows-msvc-cmake: + runs-on: windows-2019 + env: + CPPUNIT_IGNORE: class CppUnit::TestCaller.testFind,class CppUnit::TestCaller.testSendToReceiveFrom,class CppUnit::TestCaller.testPing,class CppUnit::TestCaller.testBigPing,class CppUnit::TestCaller.testMTU,class CppUnit::TestCaller.testProxy,class CppUnit::TestCaller.testProxy + steps: + - uses: actions/checkout@v2 + - run: cmake -S. -Bcmake-build -DENABLE_NETSSL_WIN=ON -DENABLE_NETSSL=OFF -DENABLE_CRYPTO=OFF -DENABLE_JWT=OFF -DENABLE_DATA=ON -DENABLE_DATA_ODBC=ON -DENABLE_DATA_MYSQL=OFF -DENABLE_DATA_POSTGRESQL=OFF -DENABLE_TESTS=ON + - run: cmake --build cmake-build --config Release + - run: >- + cd cmake-build; + ctest --output-on-failure -E "(DataMySQL)|(DataODBC)|(Redis)|(MongoDB)" -C Release