Skip to content

Add delete in AreaList desctuctor to free memory #17382

Add delete in AreaList desctuctor to free memory

Add delete in AreaList desctuctor to free memory #17382

Workflow file for this run

name: Ubuntu CI (push and/or release)
on:
push:
branches:
- develop
- feature/*
- features/*
- fix/*
- issue-*
- release/*
- doc/*
- dependabot/**
- tests/*
schedule:
- cron: '21 2 * * *'
workflow_call:
inputs:
run-tests:
required: true
type: string
target_branch:
required: true
type: string
env:
GITHUB_TOKEN: ${{ github.token }}
IS_RELEASE: ${{ github.event_name == 'workflow_dispatch' }}
RUN_SIMPLE_TESTS: ${{ github.event_name == 'push' || inputs.run-tests == 'true' }}
RUN_EXTENDED_TESTS: ${{ github.event_name == 'schedule' || inputs.run-tests == 'true' }}
REF: ${{ inputs.target_branch =='' && github.ref || inputs.target_branch}}
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
triplet: x64-linux
PYTHON_VERSION: "3.12"
jobs:
build:
name: Build
env:
ORTOOLS_DIR: ${{ github.workspace }}/or-tools
os: ubuntu-22.04
# Caching strategy of VCPKG dependencies
VCPKG_BINARY_SOURCES: "clear;files,${{ github.workspace }}/vcpkg_cache,readwrite"
runs-on: ubuntu-22.04
if: "!contains(github.event.head_commit.message, '[skip ci]')"
steps:
- uses: actions/checkout@v6
with:
ref: ${{ env.REF }}
- name: Install VCPKG
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@v5
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: Install ccache
run: sudo apt-get install -y ccache
- name: Restore ccache cache
id: cache
uses: actions/cache/restore@v5
with:
path: ${{ github.workspace }}/.ccache_ubuntu
key: ${{ env.os }}-${{ github.ref_name }}
restore-keys: |
${{ env.os }}-
- name: Configure ccache
run: |
ccache --set-config=cache_dir=${{ github.workspace }}/.ccache_ubuntu
ccache --set-config=max_size=500M
ccache --set-config=compression=true
ccache -p
ccache -z
- name: Install libraries
run: |
sudo apt-get update
sudo apt-get install uuid-dev
sudo apt-get install xsltproc
- name: Config OR-Tools URL
run: |
echo "ORTOOLS_URL=https://github.com/rte-france/or-tools-rte/releases/download/$(cat ortools_tag)/ortools_cxx_ubuntu-22.04_static_sirius.zip" >> $GITHUB_ENV
- name: Download pre-compiled librairies
uses: ./.github/workflows/download-extract-precompiled-libraries-tgz
with:
os: ${{env.os}}
ortools-url: ${{env.ORTOOLS_URL}}
ortools-dir: ${{env.ORTOOLS_DIR}}
- name: Set up Python
id: setup-python
uses: actions/setup-python@v6
with:
python-version: ${{env.PYTHON_VERSION}}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip3 install -r src/tests/examples/requirements.txt
- name: Configure
run: |
cmake -B _build -S src \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-linux-release \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=ON \
-DBUILD_TOOLS=ON \
-DCMAKE_PREFIX_PATH=${{ env.ORTOOLS_DIR }}/install \
-DPython3_EXECUTABLE="${{ env.Python3_ROOT_DIR }}/bin/python"
- name: Build
run: |
cmake --build _build -j$(nproc)
- name: Creation of complete .tar.gz archive
if: ${{ success() }}
run: |
cd _build
cpack -G TGZ -D CPACK_INSTALLED_DIRECTORIES="${{ env.ORTOOLS_DIR }}/install/lib;bin"
- name: Creation of solver only .tar.gz archive
if: ${{ success() }}
run: |
cd _build
cmake --install . --prefix install
pushd .
cd install/bin
cp ${{ env.ORTOOLS_DIR }}/install/lib/*.so* .
tar czf ../../antares-solver_ubuntu22.04.tar.gz antares-solver libsirius_solver.so *.so*
popd
rm -rf install
- name: Both previous archives upload
if: ${{ success() }}
uses: actions/upload-artifact@v7
with:
name: ubuntu-targz
path: _build/*.tar.gz
- name: Run API tests
run: |
cmake --install _build --prefix antares_install
cd src/api_client_example
cmake -B _build -S . \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=ON \
-DCMAKE_TOOLCHAIN_FILE=${{github.workspace}}/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-linux-release \
-DCMAKE_PREFIX_PATH="${{github.workspace}}/_build/vcpkg_installed/x64-linux-release;${{github.workspace}}/install;${{ env.ORTOOLS_DIR }}/install;${{github.workspace}}/antares_install"
cmake --build _build -j$(nproc)
cd _build
ctest -C Release --output-on-failure
- name: Read simtest version
run: |
echo 'SIMTEST_JSON<<EOF' >> $GITHUB_ENV
cat ./simtest.json >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- name: Export simtest version
run: |
echo "SIMTEST=${{ fromJson(env.SIMTEST_JSON).version }}" >> $GITHUB_ENV
- name: Init submodule Antares_Simulator_Tests_NR
run: |
git submodule update --init --remote --recursive src/tests/resources/Antares_Simulator_Tests_NR
- name: Run named mps tests
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: valid-named-mps
os: ${{ env.os }}
variant: "named-mps"
- name: Run fast cucumber
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/cucumber-tests
with:
tags: "fast"
- name: Run cucumber on modeler
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/cucumber-tests
with:
feature: "features/modeler-features"
- name: Run unit and end-to-end tests
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
run: |
cd _build
ctest -C Release --output-on-failure -L "unit|end-to-end"
- name: Merge XML reports into single HTML
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
run: |
cd _build/tests
${{github.workspace}}/src/tests/merge_all.sh ${{github.workspace}}/src/tests/format_xml_report.xsl
- name: Rename report
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
run: |
mkdir testing-report
mv ${{ github.workspace }}/_build/tests/report.html testing-report/$PAGE
env:
PAGE: ${{ github.sha }}.html
- name: Upload logs for failed tests
if: ${{ failure() }}
uses: actions/upload-artifact@v7
with:
name: test-log
path: ${{ github.workspace }}/_build/Testing/Temporary/LastTest.log
- name: Run tests about infinity on BCs RHS
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: valid-v830
os: ${{ env.os }}
- name: Run MILP with CBC
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: valid-milp
variant: "milp-cbc"
os: ${{ env.os }}
- name: Run tests on adequacy patch (CSR)
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: adequacy-patch-CSR
os: ${{ env.os }}
- name: Run tests introduced in 8.6.0
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: valid-v860
os: ${{ env.os }}
- name: Run tests introduced in 8.7.0
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: valid-v870
os: ${{ env.os }}
- name: Run tests introduced in 9.1.0
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: valid-v910
os: ${{ env.os }}
- name: Run tests introduced in 9.2.0
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: valid-v920
os: ${{ env.os }}
- name: Run tests introduced in 9.3.0
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: valid-v930
os: ${{ env.os }}
- name: Run short-tests
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: short-tests
os: ${{ env.os }}
- name: Run cucumber on v9.2 tests
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/cucumber-tests
with:
feature: "features/solver-features/tests_for_v9.2.feature"
- name: Run mps tests
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: valid-mps
os: ${{ env.os }}
- name: Run unfeasibility-related tests
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
run: |
cd _build
ctest -C Release --output-on-failure -R "^unfeasible$"
- name: Run parallel tests
if: ${{ env.RUN_EXTENDED_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: valid-parallel
os: ${{ env.os }}
variant: "parallel"
- name: Run medium-tests
if: ${{ env.RUN_EXTENDED_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: medium-tests
os: ${{ env.os }}
- name: Run cucumber on medium-tests
if: ${{ env.RUN_EXTENDED_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/cucumber-tests
with:
feature: "features/solver-features/medium_tests.feature"
- name: Run long-tests-1
if: ${{ env.RUN_EXTENDED_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: long-tests-1
os: ${{ env.os }}
- name: Run long-tests-2
if: ${{ env.RUN_EXTENDED_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: long-tests-2
os: ${{ env.os }}
- name: Run long-tests-3
if: ${{ env.RUN_EXTENDED_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/run-tests
with:
simtest-tag: ${{ env.SIMTEST }}
batch-name: long-tests-3
os: ${{ env.os }}
- name: Run cucumber on hybrid studies
if: ${{ env.RUN_SIMPLE_TESTS == 'true' && !cancelled() }}
uses: ./.github/workflows/cucumber-tests
with:
feature: "features/solver-features/hybrid_studies.feature"
- name: Barrier
if: ${{ !success() }}
run: exit 1
- name: Installer .deb creation
run: |
cd _build
cpack -G DEB -D CPACK_INSTALLED_DIRECTORIES="${{ env.ORTOOLS_DIR }}/install/lib;bin"
- name: Installer deb upload push
uses: actions/upload-artifact@v7
with:
name: deb
path: _build/*.deb
- name: Publish assets
if: ${{ env.IS_RELEASE == 'true' }}
env:
GITHUB_TOKEN: ${{ github.token }}
tag: ${{ github.event.inputs.release_tag }}
run: |
gh release upload "$tag" _build/*.tar.gz _build/*.deb
- name: Update continuous-delivery release
if: github.ref == 'refs/heads/develop'
env:
GH_TOKEN: ${{ github.token }}
run: |
mv _build/antares-*-Ubuntu-22.04.tar.gz _build/antares-cd-Ubuntu-22.04.tar.gz
mv _build/antares-*-Ubuntu-22.04.deb _build/antares-cd-Ubuntu-22.04.deb
gh release upload --clobber continuous-delivery _build/*.tar.gz _build/*.deb
gh release edit continuous-delivery --title "continuous delivery (generated $(date +'%Y-%m-%d %H:%M'))"
#update continuous delivery tag to point to the latest develop commit
gh api repos/${{ github.repository }}/git/refs/tags/continuous-delivery -X PATCH -f sha=$(git rev-parse HEAD)
- name: Cache vcpkg binary dir
if: always()
id: save-cache-vcpkg-binary
uses: actions/cache/save@v5
with:
path: ${{ github.workspace }}/vcpkg_cache
key: vcpkg-cache-ubuntu-${{ hashFiles('src/vcpkg.json', '.git/modules/vcpkg/HEAD') }}
- name: Display ccache statistics
run: ccache -s
# Delete the old cache on hit to emulate a cache update. See
# https://github.com/actions/cache/issues/342.
- name: Delete old cache
continue-on-error: true
env:
GH_TOKEN: ${{ github.token }}
GH_DEBUG: api gh cache delete
if: ${{ !cancelled() && steps.cache.outputs.cache-hit }}
# Using `--repo` makes it so that this step doesn't require checking out the
# repo first.
run: gh cache delete --repo ${{ github.repository }} ${{ steps.cache.outputs.cache-primary-key }}
- name: Save ccache cache
if: ${{ !cancelled() }}
uses: actions/cache/save@v5
with:
path: ${{ github.workspace }}/.ccache_ubuntu
key: ${{ steps.cache.outputs.cache-primary-key }}