Fix #4438
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: SonarCloud | |
on: | |
push: | |
branches: | |
- develop | |
- feature/* | |
- features/* | |
- fix/* | |
- issue-* | |
- release/* | |
- doc/* | |
- dependabot/* | |
jobs: | |
sonarcloud: | |
name: SonarCloud | |
runs-on: ${{ matrix.os }} | |
if: "!contains(github.event.head_commit.message, '[skip ci]')" | |
strategy: | |
matrix: | |
os: [ ubuntu-20.04 ] | |
env: | |
VCPKG_BINARY_SOURCES: "clear;files,${{ github.workspace }}/vcpkg_cache,readwrite" | |
ORTOOLS_DIR: $GITHUB_WORKSPACE/or-tools | |
ORTOOLS_URL: "https://github.com/rte-france/or-tools-rte/releases/download/v9.11-rte1.1/ortools_cxx_ubuntu-20.04_static_sirius.zip" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- id: sonar-install | |
name: Install sonar-scanner and build-wrapper | |
uses: SonarSource/sonarcloud-github-c-cpp@v3 | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ matrix.os }}-${{ matrix.xprs.value }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.8 | |
- name: Install gcovr | |
run: sudo pip install gcovr==5.0 #5.1 generate issues with sonarcloud report parsing | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip3 install -r requirements-tests.txt | |
- name: Install libraries | |
run: | | |
sudo apt-get update --fix-missing | |
sudo apt-get install g++-10 gcc-10 | |
- name: Update alternatives | |
#mpicxx uses "g++" so we need g++ to be symbolic link to g++-10 | |
run: | | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10 | |
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10 | |
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30 | |
sudo update-alternatives --set cc /usr/bin/gcc | |
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30 | |
sudo update-alternatives --set c++ /usr/bin/g++ | |
- name: Read antares-solver version | |
id: antares-version | |
uses: ./.github/actions/read-json-value | |
with: | |
path: 'antares-version.json' | |
key: 'antares_version' | |
- name: Read antares-xpansion version | |
id: antares-xpansion-version | |
uses: ./.github/actions/read-json-value | |
with: | |
path: 'antares-version.json' | |
key: 'antares_xpansion_version' | |
- name: Download pre-compiled librairies | |
uses: ./.github/workflows/download-extract-precompiled-libraries-tgz | |
with: | |
antares-version: ${{steps.antares-version.outputs.result}} | |
os: ${{matrix.os}} | |
os-full-name: Ubuntu-20.04 | |
ortools-url: ${{env.ORTOOLS_URL}} | |
ortools-dir: ${{env.ORTOOLS_DIR}} | |
- name: Init submodule | |
run: | | |
git submodule update --init --recursive . | |
- name: vcpkg install | |
run: | | |
git submodule update --init vcpkg | |
./vcpkg/bootstrap-vcpkg.sh -disableMetrics | |
- name: Restore vcpkg binary dir from cache | |
id: cache-vcpkg-binary | |
uses: actions/cache/restore@v4 | |
with: | |
path: ${{ github.workspace }}/vcpkg_cache | |
key: vcpkg-cache-ubuntu-${{ hashFiles('src/vcpkg.json', '.git/modules/vcpkg/HEAD') }} | |
# Allows to restore a cache when deps have only partially changed (like adding a dependency) | |
restore-keys: vcpkg-cache-ubuntu- | |
- name: Configure | |
shell: bash | |
run: | | |
cmake -B _build -S . \ | |
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_C_COMPILER=/usr/bin/gcc-10 \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_CXX_COMPILER=/usr/bin/g++-10 \ | |
-DCODE_COVERAGE=ON \ | |
-DBUILD_TESTING=ON \ | |
-DBUILD_antares_solver=OFF \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_PREFIX_PATH="${{ github.workspace }}/deps;${{env.ORTOOLS_DIR}}/install" \ | |
-DCMAKE_INSTALL_PREFIX=_install \ | |
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | |
-DVCPKG_TARGET_TRIPLET=x64-linux-release \ | |
-DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake | |
- name: Cache vcpkg binary dir | |
if: always() | |
id: save-cache-vcpkg-binary | |
uses: actions/cache/save@v4 | |
with: | |
path: ${{ github.workspace }}/vcpkg_cache | |
key: vcpkg-cache-ubuntu-${{ hashFiles('src/vcpkg.json', '.git/modules/vcpkg/HEAD') }} | |
- run: | | |
sed -i 's#: ".*/mpicxx #: "g++ #' $GITHUB_WORKSPACE/_build/compile_commands.json | |
- name: Build | |
run: cmake --build _build --config Release -j$(nproc) | |
- name: Test and generate coverage | |
continue-on-error: true | |
run: | | |
cd $GITHUB_WORKSPACE/_build | |
ctest -C Release --output-on-failure -L "unit|short" | |
- name: Compile coverage reports | |
run: | | |
cmake --build $GITHUB_WORKSPACE/_build --target code-coverage | |
- name: Run sonar-scanner | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN_2022 }} | |
run: sonar-scanner --define sonar.host.url="${{ env.SONAR_HOST_URL }}" |