From 79a3bc7c5063fcfbf27648eaefaefb9fcc55d480 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Svensson?= Date: Sun, 17 Oct 2021 23:04:54 +0200 Subject: [PATCH] Add CI via Github Actions This is an initial setup with similarities to how we test via TravisCI; build via autotools and build via cmake. Additional testmatrix for sanitizer testing. --- .github/workflows/ci.yml | 66 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..564ae6e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,66 @@ +name: ci +on: [push, pull_request] + +jobs: + autotools: + runs-on: ubuntu-latest + steps: + - name: Prepare + run: | + sudo apt update -qq + sudo apt install -qq check + pip install cpp-coveralls + - uses: actions/checkout@v2 + - name: Build + run: | + ./autogen.sh + ./configure --enable-check --enable-debug --enable-gcov + make V=1 + - name: Install + run: sudo make install + - name: Run tests + run: make check + - name: Upload coverage + if: github.repository == 'c9s/r3' + run: coveralls --exclude php + + cmake: + runs-on: ubuntu-latest + steps: + - name: Prepare + run: | + sudo apt update -qq + sudo apt install -qq check ninja-build + - uses: actions/checkout@v2 + - name: Build and test + run: | + mkdir build && cd build + cmake -GNinja .. + ninja -v + ctest --verbose + + sanitizers: + name: ${{ matrix.sanitizer }}-sanitizer [${{ matrix.compiler }}] + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + compiler: [gcc, clang] + sanitizer: [thread, undefined, leak, address] + steps: + - name: Prepare + run: | + sudo apt update -qq + sudo apt install -qq check + - uses: actions/checkout@v2 + - name: Build + env: + CC: ${{ matrix.compiler }} + run: | + mkdir build && cd build + CFLAGS="-fsanitize=${{ matrix.sanitizer }} -fno-sanitize-recover=all -fno-omit-frame-pointer" cmake .. + VERBOSE=1 make all + - name: Test + run: | + cd build + ctest --verbose