Skip to content

Commit

Permalink
Add new action using the build wrapper from sonar directly (#296)
Browse files Browse the repository at this point in the history
Use the `sonarsource/sonarcloud-github-c-cpp@v2`, with this we obtain
less complexity in the action.

Additionally:

- Fixed deprecation in properties, now the cache is managed in a
different way and some properties are different. The build process is
also cached to improve the speed.
- Threading is managed automatically, now we get 4 threads and we were
running only with 2 (speed should improve)
  • Loading branch information
m-mirz authored May 20, 2024
2 parents 9bca0bd + 462e107 commit f71d1a3
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 52 deletions.
95 changes: 46 additions & 49 deletions .github/workflows/sonar_cloud.yaml
Original file line number Diff line number Diff line change
@@ -1,59 +1,56 @@
name: Sonar Cloud Analysis
on:
# Trigger analysis when pushing in master or pull requests, and when creating
# a pull request.
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
types: [opened, synchronize, reopened]
jobs:
build:
name: Analyse with Sonar Cloud
sonarcloud:
name: Prepare and run Sonar Scan
runs-on: ubuntu-latest
container: sogno/dpsim:dev
env:
SONAR_SCANNER_VERSION: 5.0.1.3006
SONAR_SERVER_URL: "https://sonarcloud.io"
BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Setup node 20
uses: actions/setup-node@v4
with:
node-version: 20
- 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: Setup sonar cache
uses: actions/cache@v4
with:
path: ${{ github.workspace }}/sonar-cache
key: sonar-cache-${{ github.ref }}
- name: Create Build Folder
run: mkdir build
- name: Configure CMake
shell: bash
working-directory: ${{ github.workspace }}/build
run: |
cmake -DCIM_VERSION=CGMES_2.4.15_16FEB2016 $GITHUB_WORKSPACE
- name: Run build-wrapper
run: |
build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build build/
- name: Run sonar-scanner
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: |
sonar-scanner --define sonar.host.url="${{ env.SONAR_SERVER_URL }}" --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}"
- name: Fetch repository
uses: actions/checkout@v4
with:
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0
- name: Setup Node 20
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install sonar-scanner and build-wrapper
uses: sonarsource/sonarcloud-github-c-cpp@v2
- name: Create Build Folder
run: mkdir build
- name: Setup build directory cache
uses: actions/cache@v4
with:
path: ${{ github.workspace }}/build
key: wrapper-dir-cache-${{ github.ref }}
- name: Setup sonar cache
uses: actions/cache@v4
with:
path: |
.scannerwork
sonar-cache
key: sonar-cache-${{ github.ref }}
- name: Configure CMake
shell: bash
working-directory: ${{ github.workspace }}/build
run: |
cmake -DCIM_VERSION=CGMES_2.4.15_16FEB2016 $GITHUB_WORKSPACE
- name: Run build-wrapper
run: |
build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build build/ -j $(nproc)
- name: Run sonar-scanner
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: |
sonar-scanner --define sonar.cfamily.compile-commands=${{ env.BUILD_WRAPPER_OUT_DIR }}/compile_commands.json
6 changes: 3 additions & 3 deletions sonar-project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ sonar.projectKey=sogno-platform_dpsim
sonar.organization=sogno-platform

# Cpp analysis settings
sonar.cfamily.threads=2
sonar.cfamily.cache.enabled=true
sonar.cfamily.cache.path=sonar-cache
sonar.host.url=https://sonarcloud.io
sonar.cfamily.analysisCache.path=sonar-cache
sonar.cfamily.analysisCache.mode=fs

# Sonar Python Version
sonar.python.version=3.8, 3.9, 3.10
Expand Down

0 comments on commit f71d1a3

Please sign in to comment.