--- name: linux on: pull_request: types: [opened, synchronize] paths-ignore: - '**.md' - '.mailmap' - 'ChangeLog*' - 'whatsnew*' - 'LICENSE' push: paths-ignore: - '**.md' - '.mailmap' - 'ChangeLog*' - 'whatsnew*' - 'LICENSE' jobs: cmake: runs-on: ${{ matrix.os }} if: "!contains(github.event.head_commit.message, 'ci skip')" strategy: fail-fast: false matrix: os: [ubuntu-18.04] EVENT_MATRIX: - DIST - NONE - NO_SSL - DISABLE_OPENSSL - DISABLE_THREAD_SUPPORT - DISABLE_DEBUG_MODE - DISABLE_MM_REPLACEMENT - COMPILER_CLANG - TEST_EXPORT_STATIC - TEST_EXPORT_SHARED - ASAN - TSAN - UBSAN steps: - uses: actions/checkout@v2.0.0 - name: Cache Build uses: actions/cache@v2 with: path: build key: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-v3 - name: Cache Dist Build uses: actions/cache@v2 with: path: dist key: ${{ matrix.os }}-cmake-dist-${{ matrix.EVENT_MATRIX }}-v3 - name: Install Depends run: | sudo apt-get update sudo apt-get install -y libmbedtls-dev - name: Build And Test shell: bash run: | if [ "${{ matrix.EVENT_MATRIX }}" == "DIST" ]; then ./autogen.sh mkdir -p dist cd dist ../configure rm -fr *.tar.gz make dist archive=$(echo *.tar.gz) tar -vxf $archive cd $(basename $archive .tar.gz) fi export TSAN_OPTIONS=suppressions=$PWD/extra/tsan.supp export LSAN_OPTIONS=suppressions=$PWD/extra/lsan.supp if [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_OPENSSL" ]; then EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON" elif [ "${{ matrix.EVENT_MATRIX }}" == "NO_SSL" ]; then EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON -DEVENT__DISABLE_MBEDTLS=ON" elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_THREAD_SUPPORT" ]; then EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_THREAD_SUPPORT=ON" elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_DEBUG_MODE" ]; then EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_DEBUG_MODE=ON" elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_MM_REPLACEMENT" ]; then EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_MM_REPLACEMENT=ON" elif [ "${{ matrix.EVENT_MATRIX }}" == "COMPILER_CLANG" ]; then EVENT_CMAKE_OPTIONS="" export CC=clang elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON" elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=SHARED -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON" elif [ "${{ matrix.EVENT_MATRIX }}" == "ASAN" ]; then EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=debug" elif [ "${{ matrix.EVENT_MATRIX }}" == "TSAN" ]; then EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS=-fsanitize=thread -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=debug" elif [ "${{ matrix.EVENT_MATRIX }}" == "UBSAN" ]; then EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS=-fsanitize=undefined -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=debug" else EVENT_CMAKE_OPTIONS="" fi #run build and test JOBS=20 export CTEST_PARALLEL_LEVEL=$JOBS export CTEST_OUTPUT_ON_FAILURE=1 mkdir -p build cd build echo [cmake]: cmake .. $EVENT_CMAKE_OPTIONS cmake .. $EVENT_CMAKE_OPTIONS || (rm -rf * && cmake .. $EVENT_CMAKE_OPTIONS) cmake --build . if [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then sudo python3 ../test-export/test-export.py static elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then sudo python3 ../test-export/test-export.py shared else cmake --build . --target verify fi - uses: actions/upload-artifact@v1 if: failure() with: name: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-build path: build - uses: actions/upload-artifact@v1 if: failure() && matrix.EVENT_MATRIX == 'DIST' with: name: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-dist path: dist autotools: runs-on: ${{ matrix.os }} if: "!contains(github.event.head_commit.message, 'ci skip')" strategy: fail-fast: false matrix: os: [ubuntu-18.04] EVENT_MATRIX: - DIST - NONE - NO_SSL - DISABLE_OPENSSL - DISABLE_THREAD_SUPPORT - DISABLE_DEBUG_MODE - DISABLE_MM_REPLACEMENT - COMPILER_CLANG steps: - uses: actions/checkout@v2.0.0 - name: Cache Build uses: actions/cache@v2 with: path: build key: ${{ matrix.os }}-autotools-${{ matrix.EVENT_MATRIX }}-v2 - name: Cache Dist Build uses: actions/cache@v2 with: path: dist key: ${{ matrix.os }}-autotools-dist-${{ matrix.EVENT_MATRIX }}-v3 - name: Install Depends run: | sudo apt-get update sudo apt-get install -y libmbedtls-dev - name: Build And Test shell: bash run: | if [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_OPENSSL" ]; then EVENT_CONFIGURE_OPTIONS="--disable-openssl" elif [ "${{ matrix.EVENT_MATRIX }}" == "NO_SSL" ]; then EVENT_CONFIGURE_OPTIONS="--disable-openssl --disable-mbedtls" elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_THREAD_SUPPORT" ]; then EVENT_CONFIGURE_OPTIONS="--disable-thread-support" elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_DEBUG_MODE" ]; then EVENT_CONFIGURE_OPTIONS="--disable-debug-mode" elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_MM_REPLACEMENT" ]; then EVENT_CONFIGURE_OPTIONS="--disable-malloc-replacement" elif [ "${{ matrix.EVENT_MATRIX }}" == "COMPILER_CLANG" ]; then EVENT_CONFIGURE_OPTIONS="" export CC=clang else EVENT_CONFIGURE_OPTIONS="" fi #run build and test JOBS=20 ./autogen.sh if [ "${{ matrix.EVENT_MATRIX }}" == "DIST" ]; then mkdir -p dist cd dist rm -fr *.tar.gz ../configure $EVENT_CONFIGURE_OPTIONS make dist archive=$(echo *.tar.gz) tar -vxf $archive cd $(basename $archive .tar.gz) fi mkdir -p build cd build echo [configure]: ../configure $EVENT_CONFIGURE_OPTIONS ../configure $EVENT_CONFIGURE_OPTIONS make make -j $JOBS verify - uses: actions/upload-artifact@v1 if: failure() with: name: ${{ matrix.os }}-autotools-${{ matrix.EVENT_MATRIX }}-build path: build - uses: actions/upload-artifact@v1 if: failure() && matrix.EVENT_MATRIX == 'DIST' with: name: ${{ matrix.os }}-autotools-${{ matrix.EVENT_MATRIX }}-dist path: dist