From 8478c691cda866109d1e3e667c9c67634c59f2a3 Mon Sep 17 00:00:00 2001 From: Jason Marechal Date: Tue, 16 Jan 2024 16:01:30 +0100 Subject: [PATCH] ol8 release workflow --- .github/workflows/ol8-release.yml | 267 ++++++++++++++++++++++++++++++ 1 file changed, 267 insertions(+) create mode 100644 .github/workflows/ol8-release.yml diff --git a/.github/workflows/ol8-release.yml b/.github/workflows/ol8-release.yml new file mode 100644 index 000000000..ca532cf44 --- /dev/null +++ b/.github/workflows/ol8-release.yml @@ -0,0 +1,267 @@ +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: [ docker_publish, userguide, versions ] + container: 'antaresrte/rte-antares:centos7-system-deps' + 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 + + - 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/devtoolset-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/devtoolset-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}}-CentOS-7.9.2009" + 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