diff --git a/.github/workflows/SonarCloud.yml b/.github/workflows/SonarCloud.yml new file mode 100644 index 0000000..d105a52 --- /dev/null +++ b/.github/workflows/SonarCloud.yml @@ -0,0 +1,56 @@ +name: SonarCloud + +on: + push: + branches: ["main"] + pull_request: + types: ["opened", "synchronize", "reopened"] + +jobs: + build: + runs-on: ubuntu-latest + + env: + BUILD_TYPE: Release + BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y libudev-dev libx11-dev libxrandr-dev libxcursor-dev libgl-dev + + - name: Cache vcpkg_installed + uses: actions/cache@v3 + with: + path: | + ${{github.workspace}}/build/vcpkg_installed + key: ${{ runner.os }}-vcpkg-${{ hashFiles('vcpkg.json') }} + restore-keys: | + ${{ runner.os }}-vcpkg- + + - name: Install vcpkg + run: | + git clone https://github.com/microsoft/vcpkg.git + cd vcpkg + ./bootstrap-vcpkg.sh + ./vcpkg integrate install + + - name: Install sonar-scanner and build-wrapper + uses: SonarSource/sonarcloud-github-c-cpp@v2 + + - name: Run build-wrapper + run: | + cmake -B ${{ github.workspace }}/build -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake + build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build ${{ github.workspace }}/build --config Release + + - name: Run sonar-scanner + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: | + sonar-scanner --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}"