Skip to content

Run sonar cloud on C/C++ bindings [AP-910] #1346

Run sonar cloud on C/C++ bindings [AP-910]

Run sonar cloud on C/C++ bindings [AP-910] #1346

Workflow file for this run

name: C
on:
workflow_dispatch:
push:
branches:
- master
- staging
tags:
- "*"
pull_request:
paths:
- "c/**"
- .github/workflows/c.yaml
jobs:
ubuntu-lts:
strategy:
matrix:
build_type: [ "Debug", "Release" ]
compiler:
- c: gcc-6
cxx: g++-6
package: gcc-6 g++-6
- c: clang-6.0
cxx: clang++-6.0
package: clang-6.0
build_shared_libraries: [ true, false ]
exclude:
- build_type: Debug
compiler:
c: gcc-6
cxx: g++-6
build_shared_libraries: false
name: "Ubuntu 18.04 (Build: ${{ matrix.build_type }}, Compilers: ${{ matrix.compiler.c }}/${{ matrix.compiler.cxx }}, Shared Library: ${{ matrix.build_shared_libraries }})"
runs-on: ubuntu-latest
container: ubuntu:18.04
steps:
- name: Setup
run: |
apt-get -qq update
apt-get -qq install software-properties-common gpg wget
add-apt-repository -y ppa:git-core/ppa
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic-rc main' \
| tee -a /etc/apt/sources.list.d/kitware.list >/dev/null
apt-get -qq update
apt-get -qq install libeigen3-dev libserialport-dev git cmake build-essential ${{ matrix.compiler.package }}
- uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0
- name: Configure
run: |
cmake -S c -B build \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-DCMAKE_C_COMPILER=${{ matrix.compiler.c }} \
-DCMAKE_CXX_COMPILER=${{ matrix.compiler.cxx }} \
-DBUILD_SHARED_LIBS=${{ matrix.build_shared_libraries }} \
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
-DINSTALL_GTEST=false \
-DBUILD_EXAMPLES=true
- name: Build
run: cmake --build build --parallel
- name: Example
run: cmake --build build --parallel --target examples
- name: Test
run: cmake --build build --target do-all-tests
- name: Install
run: cmake --build build --target install
- name: Test Package
run: |
cmake -S c/test_package -B c/test_package/build -DCMAKE_PREFIX_PATH="$PWD/install"
cmake --build c/test_package/build
macos:
name: macOS
runs-on: macos-11
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0
- name: Configure
run: |
cmake -S c -B build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/install" \
-DINSTALL_GTEST=false
- name: Build
run: cmake --build build
- name: Test
run: cmake --build build --target do-all-tests
- name: Install
run: cmake --build build --target install
- name: Test Package
run: |
cmake -S c/test_package -B c/test_package/build -DCMAKE_PREFIX_PATH="${{ github.workspace }}/install"
cmake --build c/test_package/build
big-endian:
name: Test Big Endian
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0
- name: Setup
run: |
sudo apt-get -qq update
sudo apt-get -qq install gcc-multilib-mips-linux-gnu gcc-mips-linux-gnu qemu-user g++-mips-linux-gnu
- name: Run big endian tests
run: make test-c-v4
env:
CC: mips-linux-gnu-gcc
CXX: mips-linux-gnu-g++
CMAKEFLAGS: -DCMAKE_EXE_LINKER_FLAGS_RELEASE="-static" -Dgtest_disable_pthreads=ON
bazel:
name: Bazel
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Install Bazel
run: |
curl -LO "https://github.com/bazelbuild/bazelisk/releases/download/v1.15.0/bazelisk-linux-amd64"
mkdir -p "${GITHUB_WORKSPACE}/bin/"
mv bazelisk-linux-amd64 "${GITHUB_WORKSPACE}/bin/bazel"
chmod +x "${GITHUB_WORKSPACE}/bin/bazel"
- name: Bazel Build & Test
run: |
${GITHUB_WORKSPACE}/bin/bazel test //...
windows-2019:
strategy:
matrix:
generator: [ "MinGW Makefiles", "Visual Studio 16 2019" ]
build_shared_libraries: [ true, false ]
name: "Windows 2019 (Generator: ${{ matrix.generator }}, Shared Library: ${{ matrix.build_shared_libraries }})"
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0
- name: Configure
run: |
cmake -G "${{ matrix.generator }}" -S c -B build `
-DCMAKE_BUILD_TYPE=Release `
-DBUILD_SHARED_LIBS=${{ matrix.build_shared_libraries }} `
-DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/install" `
-Dgtest_force_shared_crt=true `
-DINSTALL_GTEST=false
- name: Build
run: cmake --build build
- name: Build Test
run: cmake --build build --target build-all-tests
- name: Run Test
run: cmake --build build --target do-all-tests
if: ${{ !matrix.build_shared_libraries }}
- name: Install
run: cmake --build build --target install
- name: Test Package
run: |
cmake -G "${{ matrix.generator }}" -S c/test_package -B c/test_package/build -DCMAKE_PREFIX_PATH="${{ github.workspace }}/install"
cmake --build c/test_package/build
codecov:
name: C Code Coverage
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0
- name: Install sonar-scanner and build-wrapper
uses: SonarSource/sonarcloud-github-c-cpp@v2
- name: Setup
run: |
sudo apt-get install llvm -y
- name: Build and Run Tests
env:
CC: clang
CXX: clang++
run: |
cmake -S c -B build -DCODE_COVERAGE=ON -DCMAKE_C_FLAGS=--coverage -DCMAKE_CXX_FLAGS=--coverage &&
build-wrapper-linux-x86-64 --out-dir ./bw-output cmake --build build -j8 --target ccov-all-export
- name: Run sonar-scanner
uses: sonarsource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN_C }}
with:
args:
-Dsonar.organization=swift-nav
-Dsonar.projectName=libsbp-c
-Dsonar.projectKey=swift-nav_libsbp_c
-Dsonar.verbose=true
-Dsonar.login=${{ secrets.SONAR_TOKEN_C }}
-Dsonar.cfamily.threads=4
-Dsonar.cfamily.llvm-cov.reportPath=./build/ccov/coverage.txt
-Dsonar.cfamily.compile-commands=./build/compile_commands.json