diff --git a/.github/workflows/sonarcloud.yaml b/.github/workflows/sonarcloud.yaml new file mode 100644 index 0000000..2e53092 --- /dev/null +++ b/.github/workflows/sonarcloud.yaml @@ -0,0 +1,86 @@ +name: Build + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build: + name: Build + runs-on: ubuntu-latest + + env: + SONAR_SCANNER_VERSION: 4.7.0.2747 + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: 11 + + - name: Cache SonarCloud + id: cache-sonarcloud + uses: actions/cache@v3 + with: + path: .sonar + key: sonar-${{ runner.os }}-${{ env.SONAR_SCANNER_VERSION }} + + - name: Cache SonarCloud-Cache + uses: actions/cache@v3 + with: + path: .sonar-cache + key: sonar-cache-${{ runner.os }}-${{ env.SONAR_SCANNER_VERSION }}-${{ hashFiles('src/**') }} + restore-keys: | + sonar-cache-${{ runner.os }}-${{ env.SONAR_SCANNER_VERSION }}- + sonar-cache-${{ runner.os }}- + sonar-cache- + + - name: Download SonarCloud + if: steps.cache-sonarcloud.outputs.cache-hit != 'true' + run: | + mkdir .sonar + + curl -sSLo .sonar/sonar-scanner.zip ${{ env.SONAR_SCANNER_DOWNLOAD_URL }} + unzip -o .sonar/sonar-scanner.zip -d .sonar/ + + curl -sSLo .sonar/build-wrapper-linux-x86.zip ${{ env.BUILD_WRAPPER_DOWNLOAD_URL }} + unzip -o .sonar/build-wrapper-linux-x86.zip -d .sonar/ + env: + SONAR_SCANNER_DOWNLOAD_URL: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${{ env.SONAR_SCANNER_VERSION }}-linux.zip + BUILD_WRAPPER_DOWNLOAD_URL: https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip + + - name: Setup SonarCloud + run: | + echo "$(pwd)/.sonar/sonar-scanner-${{ env.SONAR_SCANNER_VERSION }}-linux/bin" >> $GITHUB_PATH + echo "$(pwd)/.sonar/build-wrapper-linux-x86" >> $GITHUB_PATH + + - name: Compile + run: | + mkdir build + cd build + build-wrapper-linux-x86-64 --out-dir ../.build-wrapper-out cmake .. -DMIN_LOGGER_LEVEL=TRACE + build-wrapper-linux-x86-64 --out-dir ../.build-wrapper-out make -j$(nproc) + + - name: Run SonarCloud + run: | + sonar-scanner \ + --define sonar.host.url="https://sonarcloud.io/" \ + --define sonar.cfamily.build-wrapper-output=".build-wrapper-out" \ + --define sonar.projectKey=TrueBrain_TrueMQTT-cpp \ + --define sonar.organization=truebrain \ + --define sonar.projectName=TrueMQTT-cpp \ + --define sonar.sources=src \ + --define sonar.sourceEncoding=UTF-8 \ + --define sonar.cfamily.cache.enabled=true \ + --define sonar.cfamily.cache.path=.sonar-cache + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}