sonar-cloud.yml 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. name: Sonar Cloud
  2. on:
  3. push:
  4. branches: [ master ]
  5. paths-ignore:
  6. - 'Docs/**'
  7. - '**.md'
  8. - '**.txt'
  9. pull_request:
  10. branches: [ master ]
  11. paths-ignore:
  12. - 'Docs/**'
  13. - '**.md'
  14. - '**.txt'
  15. jobs:
  16. build:
  17. name: Build
  18. runs-on: ubuntu-latest
  19. env:
  20. SONAR_SCANNER_VERSION: 4.4.0.2170
  21. SONAR_SERVER_URL: "https://sonarcloud.io"
  22. BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed
  23. CLANG_VERSION: 12
  24. steps:
  25. - uses: actions/checkout@v2
  26. with:
  27. fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
  28. - name: Set up JDK 11
  29. uses: actions/setup-java@v1
  30. with:
  31. java-version: 11
  32. - name: Download and set up sonar-scanner
  33. env:
  34. SONAR_SCANNER_DOWNLOAD_URL: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${{ env.SONAR_SCANNER_VERSION }}-linux.zip
  35. run: |
  36. mkdir -p $HOME/.sonar
  37. curl -sSLo $HOME/.sonar/sonar-scanner.zip ${{ env.SONAR_SCANNER_DOWNLOAD_URL }}
  38. unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/
  39. echo "$HOME/.sonar/sonar-scanner-${{ env.SONAR_SCANNER_VERSION }}-linux/bin" >> $GITHUB_PATH
  40. - name: Download and set up build-wrapper
  41. env:
  42. BUILD_WRAPPER_DOWNLOAD_URL: ${{ env.SONAR_SERVER_URL }}/static/cpp/build-wrapper-linux-x86.zip
  43. run: |
  44. curl -sSLo $HOME/.sonar/build-wrapper-linux-x86.zip ${{ env.BUILD_WRAPPER_DOWNLOAD_URL }}
  45. unzip -o $HOME/.sonar/build-wrapper-linux-x86.zip -d $HOME/.sonar/
  46. echo "$HOME/.sonar/build-wrapper-linux-x86" >> $GITHUB_PATH
  47. - name: Configure CMake
  48. run: |
  49. cd ${{github.workspace}}/Build/
  50. ./cmake_linux_clang.sh ReleaseCoverage clang++-${{ env.CLANG_VERSION }}
  51. - name: Run build-wrapper
  52. run: |
  53. build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build ${{github.workspace}}/Build/Linux_ReleaseCoverage
  54. - name: Run unit tests and create coverage report
  55. run: |
  56. cd ${{github.workspace}}/Build/Linux_ReleaseCoverage/
  57. cmake --build . --target test
  58. llvm-profdata-${{ env.CLANG_VERSION }} merge -sparse default.profraw -o default.profdata
  59. llvm-cov-${{ env.CLANG_VERSION }} show -format=text UnitTests -instr-profile=default.profdata > coverage.txt
  60. - name: Run sonar-scanner
  61. env:
  62. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  63. SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
  64. run: |
  65. sonar-scanner --define sonar.host.url="${{ env.SONAR_SERVER_URL }}" --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}" --define sonar.cfamily.llvm-cov.reportPath="${{github.workspace}}/Build/Linux_ReleaseCoverage/coverage.txt"