diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml new file mode 100644 index 0000000..871283a --- /dev/null +++ b/.github/workflows/github-actions.yml @@ -0,0 +1,48 @@ +name: Build and Test + +on: [push] + +jobs: + build-and-test: + runs-on: ubuntu-latest + strategy: + matrix: + compiler: [gcc, clang] + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Cache directories + uses: actions/cache@v2 + with: + path: ~/.cache + key: ${{ runner.os }}-cache + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install lcov + + - name: Create build directory + run: mkdir build + + - name: Configure CMake + run: | + cd build + cmake .. -DCODE_COVERAGE=ON -DEXAMPLES=OFF + + - name: Build and test + run: | + make + make test + + - name: Collect code coverage + run: | + lcov --directory . --capture --output-file coverage.info + lcov --remove coverage.info '/usr/*' "${HOME}"'/.cache/*' --output-file coverage.info + lcov --list coverage.info + + - name: Upload code coverage to Codecov + run: | + bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports"