| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| name: sonarcloud |
| |
| on: |
| push: |
| branches: |
| - master |
| - next_stable |
| - sonar* |
| # pull_request: |
| # types: [opened, synchronize, reopened] |
| |
| jobs: |
| build: |
| name: Build |
| runs-on: ubuntu-latest |
| env: |
| SONAR_SCANNER_VERSION: 4.7.0.2747 |
| SONAR_SERVER_URL: "https://sonarcloud.io" |
| BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis |
| path: main |
| |
| - name: Set up JDK 11 |
| uses: actions/setup-java@v1 |
| with: |
| java-version: 11 |
| |
| - name: Set up Python 3.8 for gcovr |
| uses: actions/setup-python@v2 |
| with: |
| python-version: 3.8 |
| |
| - name: install gcovr 5.2 |
| run: | |
| pip install gcovr==5.2 # 5.1 is not supported |
| |
| - name: 'Configure Dependencies - Ubuntu' |
| run: | |
| sudo apt-get update |
| sudo apt-get install -y libapr1-dev libaprutil1-dev |
| |
| - name: Download and set up sonar-scanner |
| env: |
| SONAR_SCANNER_DOWNLOAD_URL: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${{ env.SONAR_SCANNER_VERSION }}-linux.zip |
| run: | |
| mkdir -p $HOME/.sonar |
| curl -sSLo $HOME/.sonar/sonar-scanner.zip ${{ env.SONAR_SCANNER_DOWNLOAD_URL }} |
| unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ |
| echo "$HOME/.sonar/sonar-scanner-${{ env.SONAR_SCANNER_VERSION }}-linux/bin" >> $GITHUB_PATH |
| |
| - name: Download and set up build-wrapper |
| env: |
| BUILD_WRAPPER_DOWNLOAD_URL: ${{ env.SONAR_SERVER_URL }}/static/cpp/build-wrapper-linux-x86.zip |
| run: | |
| curl -sSLo $HOME/.sonar/build-wrapper-linux-x86.zip ${{ env.BUILD_WRAPPER_DOWNLOAD_URL }} |
| unzip -o $HOME/.sonar/build-wrapper-linux-x86.zip -d $HOME/.sonar/ |
| echo "$HOME/.sonar/build-wrapper-linux-x86" >> $GITHUB_PATH |
| |
| - name: Run build-wrapper |
| run: | |
| cd main |
| mkdir build |
| cmake -DBUILD_TESTING=on -DENABLE_COVERAGE=on -S . -B build |
| build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build build/ --config Release |
| |
| - name: Run tests to generate coverage statistics |
| run: | |
| cd main/build |
| make test |
| |
| - name: Collect coverage into one XML report |
| run: | |
| cd main/build/src/main/cpp |
| gcovr --version |
| gcovr --sonarqube -r ../../../../ --verbose --gcov-ignore-parse-errors --exclude '../../../../src/test/' --exclude '../../../../src/examples' -o ../../../coverage.xml |
| |
| - name: Run sonar-scanner |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }} |
| run: | |
| cd main |
| sonar-scanner \ |
| --define sonar.host.url="${{ env.SONAR_SERVER_URL }}" \ |
| --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}" \ |
| --define sonar.coverageReportPaths=build/coverage.xml |