From f1aba71a6072b3e58f69cbf15475811496f4821f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jason=20Mar=C3=A9chal?= <45510813+JasonMarechal25@users.noreply.github.com> Date: Wed, 17 Jan 2024 10:34:56 +0100 Subject: [PATCH] xpress 9 and OL8 release (#750) - Change xpress matrix format to be able to select the xpress version - Add a job to publish OL8 releases --- .github/workflows/build_centos7.yml | 10 +- .github/workflows/build_oracle8.yml | 10 +- .github/workflows/build_ubuntu.yml | 12 +- .github/workflows/build_windows.yml | 10 +- .../generate-userguide-pdf/action.yml | 2 +- .github/workflows/ol8-release.yml | 269 ++++++++++++++++++ tests/cpp/lp_namer/CMakeLists.txt | 2 +- 7 files changed, 296 insertions(+), 19 deletions(-) create mode 100644 .github/workflows/ol8-release.yml diff --git a/.github/workflows/build_centos7.yml b/.github/workflows/build_centos7.yml index 19c1ae7a4..69cb57bbd 100644 --- a/.github/workflows/build_centos7.yml +++ b/.github/workflows/build_centos7.yml @@ -74,7 +74,9 @@ jobs: container: 'antaresrte/rte-antares:centos7-system-deps' strategy: matrix: - xprs: [ XPRESS-ON, XPRESS-OFF ] + xprs: [ { value: XPRESS-ON, ref: 8.13a }, + { value: XPRESS-ON, ref: 9.2.5 }, + { value: XPRESS-OFF } ] env: XPRESSDIR: ${{ github.workspace }}/xpress XPRESS: ${{ github.workspace }}/xpress/bin @@ -99,8 +101,8 @@ jobs: repository: rte-france/xpress-mp path: ${{ env.XPRESSDIR }} github-server-url: https://github.com - ref: 8.13a - if: matrix.xprs == 'XPRESS-ON' + ref: ${{matrix.xprs.ref}} + if: matrix.xprs.value == 'XPRESS-ON' - name: Download pre-compiled librairies uses: ./.github/workflows/download-extract-precompiled-libraries-tgz @@ -129,7 +131,7 @@ jobs: pip3 install -r requirements-ui.txt - name: Configure run: | - [[ ${{ matrix.xprs }} == "XPRESS-ON" ]] && XPRESS_VALUE="ON" || XPRESS_VALUE="OFF" + [[ ${{ matrix.xprs.value }} == "XPRESS-ON" ]] && XPRESS_VALUE="ON" || XPRESS_VALUE="OFF" source /opt/rh/devtoolset-10/enable export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH export PATH=/usr/lib64/openmpi/bin:$PATH diff --git a/.github/workflows/build_oracle8.yml b/.github/workflows/build_oracle8.yml index 97fcd5be2..364036392 100644 --- a/.github/workflows/build_oracle8.yml +++ b/.github/workflows/build_oracle8.yml @@ -48,7 +48,9 @@ jobs: container: 'oraclelinux:8' strategy: matrix: - xprs: [ XPRESS-ON, XPRESS-OFF ] + xprs: [ { value: XPRESS-ON, ref: 8.13a }, + { value: XPRESS-ON, ref: 9.2.5 }, + { value: XPRESS-OFF } ] needs: [ versions ] env: XPRESSDIR: ${{ github.workspace }}/xpress @@ -76,8 +78,8 @@ jobs: repository: rte-france/xpress-mp path: ${{ env.XPRESSDIR }} github-server-url: https://github.com - ref: 8.13 - if: matrix.xprs == 'XPRESS-ON' + ref: ${{matrix.xprs.ref}} + if: matrix.xprs.value == 'XPRESS-ON' - name: Set up Python run: | @@ -111,7 +113,7 @@ jobs: - name: Configure run: | - [[ ${{ matrix.xprs }} == "XPRESS-ON" ]] && XPRESS_VALUE="ON" || XPRESS_VALUE="OFF" + [[ ${{ matrix.xprs.value }} == "XPRESS-ON" ]] && XPRESS_VALUE="ON" || XPRESS_VALUE="OFF" source /opt/rh/gcc-toolset-10/enable dnf install jsoncpp-devel export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH diff --git a/.github/workflows/build_ubuntu.yml b/.github/workflows/build_ubuntu.yml index 25df1a608..ed60def35 100644 --- a/.github/workflows/build_ubuntu.yml +++ b/.github/workflows/build_ubuntu.yml @@ -20,7 +20,9 @@ jobs: strategy: matrix: os: [ ubuntu-20.04 ] - xprs: [ XPRESS-ON, XPRESS-OFF ] + xprs: [ { value: XPRESS-ON, ref: 8.13a }, + { value: XPRESS-ON, ref: 9.2.5 }, + { value: XPRESS-OFF } ] env: XPRESSDIR: ${{ github.workspace }}/xpress XPRESS: ${{ github.workspace }}/xpress/bin @@ -32,18 +34,18 @@ jobs: submodules: true - name: Checkout xpressmp linux - if: matrix.xprs == 'XPRESS-ON' + if: matrix.xprs.value == 'XPRESS-ON' uses: actions/checkout@v3 with: repository: rte-france/xpress-mp path: ${{ env.XPRESSDIR }} - ref: 8.13 + ref: ${{ matrix.xprs.ref}} token: ${{ secrets.AS_TOKEN }} #reniew token periodically - name: ccache uses: hendrikmuhs/ccache-action@v1.2.3 with: - key: ${{ matrix.os }}-${{ matrix.xprs }} + key: ${{ matrix.os }}-${{ matrix.xprs.value }} - name: Set up Python uses: actions/setup-python@v4 @@ -102,7 +104,7 @@ jobs: shell: bash #XPRESS_VALUE = ${{ matrix.xprs }} == "XPRESS-ON" ? "ON" : "OFF" run: | - [[ ${{ matrix.xprs }} == "XPRESS-ON" ]] && XPRESS_VALUE="ON" || XPRESS_VALUE="OFF" + [[ ${{ matrix.xprs.value }} == "XPRESS-ON" ]] && XPRESS_VALUE="ON" || XPRESS_VALUE="OFF" cmake -B _build -S . \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_COMPILER=/usr/bin/gcc-10 \ diff --git a/.github/workflows/build_windows.yml b/.github/workflows/build_windows.yml index 9ebf684a0..23f97ce5a 100644 --- a/.github/workflows/build_windows.yml +++ b/.github/workflows/build_windows.yml @@ -21,7 +21,9 @@ jobs: matrix: os: [ windows-latest ] triplet: [ x64-windows ] - xprs: [ XPRESS-ON, XPRESS-OFF ] + xprs: [ { value: XPRESS-ON, ref: 8.13a }, + { value: XPRESS-ON, ref: 9.2.5 }, + { value: XPRESS-OFF } ] env: XPRESSDIR: ${{ github.workspace }}\xpress XPRESS: ${{ github.workspace }}\xpress\bin @@ -35,12 +37,12 @@ jobs: submodules: true - name: Checkout xpressmp linux - if: matrix.xprs == 'XPRESS-ON' + if: matrix.xprs.value == 'XPRESS-ON' uses: actions/checkout@v3 with: repository: rte-france/xpress-mp-temp path: ${{ env.XPRESSDIR }} - ref: 8.13a + ref: ${{matrix.xprs.ref}} token: ${{ secrets.AS_TOKEN }} - name: Get release @@ -125,7 +127,7 @@ jobs: #I can't seem to expand the variable in the cmake command line so export it in env shell: bash run: | - [[ ${{ matrix.xprs }} == "XPRESS-ON" ]] && XPRESS_VALUE="ON" || XPRESS_VALUE="OFF" + [[ ${{ matrix.xprs.value }} == "XPRESS-ON" ]] && XPRESS_VALUE="ON" || XPRESS_VALUE="OFF" echo "XPRESS_VALUE=$XPRESS_VALUE" >> $GITHUB_ENV - name: Configure diff --git a/.github/workflows/generate-userguide-pdf/action.yml b/.github/workflows/generate-userguide-pdf/action.yml index a10888fc8..1200d813b 100644 --- a/.github/workflows/generate-userguide-pdf/action.yml +++ b/.github/workflows/generate-userguide-pdf/action.yml @@ -30,7 +30,7 @@ runs: shell: bash run: | sudo apt-get update --fix-missing - sudo apt-get install latexmk texlive-latex-recommended texlive-formats-extra + sudo apt-get install -y latexmk texlive-latex-recommended texlive-formats-extra - id: create shell: bash diff --git a/.github/workflows/ol8-release.yml b/.github/workflows/ol8-release.yml new file mode 100644 index 000000000..45f68d153 --- /dev/null +++ b/.github/workflows/ol8-release.yml @@ -0,0 +1,269 @@ +name: Oracle-linux8 release + +on: + push: + branches: + - main + - develop + - ci/* + workflow_dispatch: + workflow_run: + workflows: [ "Publish Release" ] + types: + - completed + release: + types: [ created ] + +env: + GITHUB_TOKEN: ${{ github.token }} + +jobs: + userguide: + runs-on: ubuntu-latest + outputs: + pdf-name: ${{ steps.create-user-guide.outputs.pdf-name }} + + steps: + - uses: actions/checkout@v3 + + - name: Read antares-xpansion version + id: antares-xpansion-version + uses: ./.github/actions/read-json-value + with: + path: 'antares-version.json' + key: 'antares_xpansion_version' + + - id: create-user-guide + name: user guide pdf creation + uses: ./.github/workflows/generate-userguide-pdf + with: + antares-xpansion-version: ${{steps.antares-xpansion-version.outputs.result}} + + - name: user guide upload + id: userguide_upload + uses: actions/upload-artifact@v3 + with: + name: user-guide + path: ${{ steps.create-user-guide.outputs.pdf-path }} + + versions: + runs-on: ubuntu-latest + outputs: + antares-version: ${{steps.antares-version.outputs.result}} + antares-xpansion-version: ${{steps.antares-xpansion-version.outputs.result}} + antares-deps-version: ${{steps.antares-deps-version.outputs.result}} + steps: + - uses: actions/checkout@v3 + - 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: Read antares-deps version + id: antares-deps-version + uses: ./.github/actions/read-json-value + with: + path: 'antares-version.json' + key: 'antares_deps_version' + + build: + runs-on: ubuntu-latest + needs: [ userguide, versions ] + container: 'oraclelinux:8' + strategy: + matrix: + xprs: [ { value: XPRESS-ON, ref: 9.2.5 }, + { value: XPRESS-OFF } ] + env: + XPRESSDIR: ${{ github.workspace }}/xpress + XPRESS: ${{ github.workspace }}/xpress/bin + XPRS_LIB_Path: ${{ github.workspace }}/xpress/lib + XPRESSDIR_CONTAINER: ${GITHUB_WORKSPACE}/xpress + XPRESS_CONTAINER: ${GITHUB_WORKSPACE}/xpress/bin + XPRS_LIB_Path_CONTAINER: ${GITHUB_WORKSPACE}/xpress/lib + outputs: + zip_name: ${{ steps.zip_name.outputs.zip_name }} + singlefile_name: ${{ steps.zip_name.outputs.singlefile_name }} + steps: + - id: branch-name + uses: tj-actions/branch-names@v6 + + - name: Install System + run: | + dnf install -y epel-release git cmake wget rpm-build redhat-lsb-core openmpi-devel + dnf install -y unzip libuuid-devel boost-test boost-devel gcc-toolset-10-toolchain zlib-devel python3-devel + source /opt/rh/gcc-toolset-10/enable + dnf install -y jsoncpp-devel + + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: true + + - name: Download pre-compiled librairies + uses: ./.github/workflows/download-extract-precompiled-libraries-tgz + with: + antares-deps-version: ${{needs.versions.outputs.antares-deps-version}} + antares-version: ${{needs.versions.outputs.antares-version}} + os: oracle8 + os-full-name: OracleServer-8.9 + #variant: -ortools-xpress + + - name: Compile Boost + uses: ./.github/workflows/compile-boost + with: + prefix: "../rte-antares-deps-Release/" + + - name: Compile tbb + uses: ./.github/workflows/compile-tbb + + - name: Install dependencies + run: | + pip3 install --upgrade pip + pip3 install wheel #Does not work in requirements + pip3 install -r requirements-tests.txt + pip3 install -r requirements-ui.txt + + - name: Download userguide + uses: actions/download-artifact@v3 + with: + name: user-guide + path: docs/ + + - name: Checkout xpressmp linux + uses: actions/checkout@v3 + with: + token: ${{ secrets.AS_TOKEN }} + repository: rte-france/xpress-mp + path: ${{ env.XPRESSDIR }} + github-server-url: https://github.com + ref: ${{matrix.xprs.ref}} + if: matrix.xprs.value == 'XPRESS-ON' + + - name: Configure + shell: bash + run: | + if [ ${{ matrix.xprs.value }} == "XPRESS-ON" ]; then + export XPRESS_VALUE="ON" + else + export XPRESS_VALUE="OFF" + fi + source /opt/rh/gcc-toolset-10/enable + export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH + export PATH=/usr/lib64/openmpi/bin:$PATH + cmake3 -B _build -S . \ + -DDEPS_INSTALL_DIR=rte-antares-deps-Release \ + -DBUILD_TESTING=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=_install \ + -DBUILD_UI=ON \ + -DUSER_GUIDE_PATH="docs/${{ needs.userguide.outputs.pdf-name }}" \ + -DXPRESS=${XPRESS_VALUE} \ + -DXPRESS_ROOT=${XPRESSDIR} \ + -DALLOW_RUN_AS_ROOT=ON + + - name: Build + shell: bash + run: | + source /opt/rh/gcc-toolset-10/enable + export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH + export PATH=/usr/lib64/openmpi/bin:$PATH + cmake3 --build _build --config Release -j2 --target install + + - name: Running unit tests + timeout-minutes: 120 + shell: bash + run: | + source /etc/profile.d/modules.sh + module load mpi + export LD_LIBRARY_PATH=LD_LIBRARY_PATH:${{ env.XPRS_LIB_Path_CONTAINER }} + export XPRESS=${{ env.XPRESS_CONTAINER }} + cd _build + ctest3 -C Release --output-on-failure -L "unit|benders|lpnamer|medium" + + - name: set name variables + id: single_file_name + shell: bash + run: | + if [ ${{ matrix.xprs.value }} == "XPRESS-ON" ]; then + WITH_XPRS="-xpress" + else + WITH_XPRS="" + fi + VERSION=${{needs.versions.outputs.antares-xpansion-version}}${WITH_XPRS} + echo "VERSION_WITH_XPRESS=$VERSION" >> $GITHUB_ENV + + - name: .tar.gz creation + run: | + cd _build + export FILE_NAME="antaresXpansion-${{env.VERSION_WITH_XPRESS}}-OracleServer-8.9" + cpack3 -G TGZ -D CPACK_PACKAGE_FILE_NAME=$FILE_NAME + echo "TGZ_NAME=$FILE_NAME.tar.gz" >> $GITHUB_ENV + + - name: Upload .tar.gz + uses: actions/upload-artifact@v3 + with: + name: ${{env.TGZ_NAME}} + path: _build/${{env.TGZ_NAME}} + + - id: create-single-file + name: Single file .tar.gz creation + uses: ./.github/workflows/single-file-creation-tgz + with: + antares-xpansion-version: ${{env.VERSION_WITH_XPRESS}} + + - name: Upload single file + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.create-single-file.outputs.archive-name }} + path: ${{ steps.create-single-file.outputs.archive-path }} + + - id: zip_name + run: | + echo "singlefile_name=${{steps.create-single-file.outputs.archive-name}}" >> "$GITHUB_OUTPUT" + echo "zip_name=${{env.TGZ_NAME}}" >> "$GITHUB_OUTPUT" + ####################### + + upload_asset_to_release: + if: github.event_name == 'release' && github.event.action == 'created' + runs-on: ubuntu-latest + needs: build + env: + ZIP_NAME: ${{needs.build.outputs.zip_name}} + SINGLEFILE_NAME: ${{needs.build.outputs.singlefile_name}} + steps: + - name: Get release + if: github.event_name == 'release' && github.event.action == 'created' + id: get_release + uses: bruceadams/get-release@main + + - name: Download Artifact + uses: actions/download-artifact@v3 + with: + name: $ZIP_NAME + path: . + + - name: Download Artifact + uses: actions/download-artifact@v3 + with: + name: $SINGLEFILE_NAME + path: . + + - name: Upload Release Asset + env: + GH_REPO: ${{ github.repository }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release upload --repo ${{env.GH_REPO}} ${{ steps.get_release.outputs.tag_name }} ${{env.ZIP_NAME}} + gh release upload --repo ${{env.GH_REPO}} ${{ steps.get_release.outputs.tag_name }} ${{env.SINGLEFILE_NAME}} + + ######################## \ No newline at end of file diff --git a/tests/cpp/lp_namer/CMakeLists.txt b/tests/cpp/lp_namer/CMakeLists.txt index 619f4f46b..473efc505 100644 --- a/tests/cpp/lp_namer/CMakeLists.txt +++ b/tests/cpp/lp_namer/CMakeLists.txt @@ -35,7 +35,7 @@ add_executable (lp_namer_tests ProblemGenerationLoggerTest.cpp WeightsFileReaderTest.cpp LpFilesExtractorTest.cpp - MpsTxtWriterTest + MpsTxtWriterTest.cpp ProblemGenerationTest.cpp )