decoupling lold and positive**** #2897
Workflow file for this run
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: Centos7 Build | |
on: | |
merge_group: | |
push: | |
branches: | |
- develop | |
- feature/* | |
- features/* | |
- fix/* | |
- issue-* | |
- release/* | |
- doc/* | |
- dependabot/* | |
release: | |
types: [ created ] | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
jobs: | |
docker_publish: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@master | |
with: | |
fetch-depth: 0 | |
- name: Get changed files | |
id: changed-files | |
uses: tj-actions/changed-files@v45 | |
with: | |
files: | | |
docker/centos7-system-deps | |
- name: Docker file push | |
id: docker_push | |
if: steps.changed-files.outputs.any_changed == 'true' | |
uses: elgohr/Publish-Docker-Github-Action@main | |
with: | |
name: antaresrte/xpansion-centos7 | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
workdir: docker | |
dockerfile: centos7-system-deps | |
cache: false | |
tags: 1.1.1 | |
versions: | |
runs-on: ubuntu-latest | |
outputs: | |
antares-version: ${{steps.antares-version.outputs.result}} | |
antares-xpansion-version: ${{steps.antares-xpansion-version.outputs.result}} | |
steps: | |
- uses: actions/checkout@v4 | |
- 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' | |
build: | |
runs-on: ubuntu-latest | |
needs: [ docker_publish, versions ] | |
container: 'antaresrte/xpansion-centos7:1.1.1' | |
env: | |
VCPKG_ROOT: ${{ github.workspace }}/vcpkg | |
ORTOOLS_DIR: $GITHUB_WORKSPACE/or-tools | |
ORTOOLS_URL: "https://github.com/rte-france/or-tools-rte/releases/download/v9.11-rte1.1/ortools_cxx_centos7_static_sirius.zip" | |
outputs: | |
TGZ_NAME: ${{ steps.export_output.outputs.TGZ_NAME }} | |
SINGLE_FILE_NAME: ${{ steps.export_output.outputs.SINGLE_FILE_NAME }} | |
steps: | |
- run: | | |
source /opt/rh/devtoolset-11/enable | |
echo $PATH >> $GITHUB_PATH | |
- name: Get release | |
if: github.event_name == 'release' && github.event.action == 'created' | |
id: get_release | |
uses: bruceadams/[email protected] | |
- uses: actions/checkout@v3 #Keep at 3 | |
with: | |
submodules: true | |
- run: | | |
yum install -y nodejs | |
- name: Setup cmake | |
uses: jwlawson/[email protected] | |
with: | |
cmake-version: '3.28.x' | |
- name: Download pre-compiled librairies | |
uses: ./.github/workflows/download-extract-precompiled-libraries-tgz | |
with: | |
antares-version: ${{needs.versions.outputs.antares-version}} | |
os: centos7 | |
os-full-name: CentOS-7.9.2009 | |
ortools-url: ${{env.ORTOOLS_URL}} | |
ortools-dir: ${{env.ORTOOLS_DIR}} | |
- name: repo update | |
run: | | |
yum update | |
sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo | |
sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo | |
sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo | |
- 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: Set-up Xpress with pip for centos 7 | |
shell: bash | |
run: | | |
export PATH=/root/miniconda3/condabin:$PATH | |
conda install -c fico-xpress "xpress>=9.2,<9.3" | |
XPRESS_DIR=/root/miniconda3/lib/python3.8/site-packages/xpress | |
echo "XPRESSDIR=$XPRESS_DIR" >> $GITHUB_ENV | |
echo "XPAUTH_PATH=$XPRESS_DIR/license/community-xpauth.xpr" >> $GITHUB_ENV | |
echo "Create symbolic link for XPRESS library file because it is missing in the Python installation" | |
ln -s $XPRESS_DIR/lib/libxprs.so.42 $XPRESS_DIR/lib/libxprs.so | |
- name: vcpkg install | |
run: | | |
git config --global safe.directory '*' | |
git submodule update --remote --init vcpkg | |
pushd vcpkg | |
git fetch --unshallow | |
./bootstrap-vcpkg.sh -disableMetrics | |
echo "VCPKG_ROOT=$GITHUB_WORKSPACE/vcpkg" >> $GITHUB_ENV | |
echo "VCPKG_CACHE_DIR=$GITHUB_WORKSPACE/vcpkg_cache" >> $GITHUB_ENV | |
echo "VCPKG_BINARY_SOURCES=clear;files,$GITHUB_WORKSPACE/vcpkg_cache,readwrite" >> $GITHUB_ENV | |
- name: Restore vcpkg binary dir from cache | |
id: cache-vcpkg-binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ env.VCPKG_CACHE_DIR }} | |
key: vcpkg-cache-centOS-${{ 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-centOS- | |
- name: Configure | |
run: | | |
source /opt/rh/devtoolset-11/enable | |
cmake -B _build -S . \ | |
-DBUILD_TESTING=ON \ | |
-DCMAKE_PREFIX_PATH="${GITHUB_WORKSPACE}/deps;${{env.ORTOOLS_DIR}}/install" \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_INSTALL_PREFIX=_install \ | |
-DBUILD_UI=ON \ | |
-DALLOW_RUN_AS_ROOT=ON \ | |
-DVCPKG_TARGET_TRIPLET=x64-linux-release \ | |
-DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake | |
- name: Build | |
run: | | |
cmake --build _build --config Release -j$(nproc) | |
- name: Tests with Cucumber | |
uses: ./.github/workflows/cucumber-tests | |
with: | |
# feature: "features/outer_loop_tests.feature" | |
mpi_path: ${GITHUB_WORKSPACE}/_build/vcpkg_installed/x64-linux-release/tools/openmpi/bin | |
- name: Cache vcpkg binary dir | |
if: always() | |
id: save-cache-vcpkg-binary | |
uses: actions/cache/save@v3 | |
with: | |
path: ${{ env.VCPKG_CACHE_DIR }} | |
key: vcpkg-cache-centOS-${{ hashFiles('src/vcpkg.json', '.git/modules/vcpkg/HEAD') }} | |
- name: Running unit tests | |
timeout-minutes: 120 | |
shell: bash | |
run: | | |
export PATH=${GITHUB_WORKSPACE}/_build/vcpkg_installed/x64-linux-release/tools/openmpi/bin/:$PATH | |
cd _build | |
ctest -C Release --output-on-failure -L "unit|benders|lpnamer|medium" | |
####################### | |
- name: Install | |
run: | | |
cd _build | |
cmake --install . | |
- id: create-single-file | |
name: Single file .tar.gz creation | |
uses: ./.github/workflows/single-file-creation-tgz | |
with: | |
antares-xpansion-version: ${{needs.versions.outputs.antares-xpansion-version}} | |
- name: Installer .tar.gz creation | |
run: | | |
cd _build | |
export FILE_NAME="antaresXpansion-${{needs.versions.outputs.antares-xpansion-version}}-CentOS-7.9.2009" | |
cpack -G TGZ -D CPACK_PACKAGE_FILE_NAME=$FILE_NAME | |
#Need to differentiate between xpress/no_xpress files | |
#Cpack command line doesn't seem to care about -P or -R options | |
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}} | |
- 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 }} | |
- name: export asset name in output | |
id: export_output | |
run: | | |
echo "TGZ_NAME=${{env.TGZ_NAME}}" >> $GITHUB_OUTPUT | |
echo "SINGLE_FILE_NAME=${{ steps.create-single-file.outputs.archive-name }}" >> $GITHUB_OUTPUT | |
####################### | |
userguide: | |
if: github.event_name == 'release' && github.event.action == 'created' | |
runs-on: ubuntu-latest | |
outputs: | |
pdf-name: ${{ steps.create-user-guide.outputs.pdf-name }} | |
steps: | |
- uses: actions/checkout@v4 | |
- 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@v4 | |
with: | |
name: user-guide | |
path: ${{ steps.create-user-guide.outputs.pdf-path }} | |
build_running_image: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build and export | |
uses: docker/build-push-action@v6 | |
with: | |
tags: centos:run | |
file: docker/centos7_test_run | |
outputs: type=docker,dest=/tmp/centos.tar | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: centos | |
path: /tmp/centos.tar | |
test_assets: | |
runs-on: ubuntu-latest | |
needs: [ build, build_running_image ] | |
steps: | |
- name: Download build assets | |
uses: actions/download-artifact@v3 | |
with: | |
name: ${{needs.build.outputs.TGZ_NAME}} | |
- name: Download image | |
uses: actions/download-artifact@v4 | |
with: | |
name: centos | |
path: /tmp | |
- name: Load image | |
run: | | |
docker load --input /tmp/centos.tar | |
- name: setup | |
run: | | |
tar --strip-components=1 -xzf ${{needs.build.outputs.TGZ_NAME}} | |
- uses: addnab/docker-run-action@v3 | |
name: Run tests | |
with: | |
image: centos:run | |
shell: bash | |
options: -v ${{ github.workspace }}:/work | |
run: | | |
export PATH=$PATH:/usr/lib64/openmpi/bin | |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/openmpi/lib | |
cd /work | |
./antares-xpansion-launcher -i examples/SmallTestFiveCandidates --allow-run-as-root | |
- uses: addnab/docker-run-action@v3 | |
name: run tests with 2 processes | |
with: | |
image: centos:run | |
shell: bash | |
options: -v ${{ github.workspace }}:/work | |
run: | | |
export PATH=$PATH:/usr/lib64/openmpi/bin | |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/openmpi/lib | |
cd /work | |
./antares-xpansion-launcher -i examples/SmallTestFiveCandidates -n 2 --allow-run-as-root | |
test_single_file_asset: | |
runs-on: ubuntu-latest | |
needs: [ build, build_running_image ] | |
steps: | |
- name: Download build assets | |
uses: actions/download-artifact@v3 | |
with: | |
name: ${{needs.build.outputs.SINGLE_FILE_NAME}} | |
- name: Download image | |
uses: actions/download-artifact@v4 | |
with: | |
name: centos | |
path: /tmp | |
- name: Load image | |
run: | | |
docker load --input /tmp/centos.tar | |
- name: setup | |
run: | | |
tar --strip-components=1 -xzf ${{needs.build.outputs.SINGLE_FILE_NAME}} | |
- uses: addnab/docker-run-action@v3 | |
name: Run tests | |
with: | |
image: centos:run | |
shell: bash | |
options: -v ${{ github.workspace }}:/work | |
run: | | |
export PATH=$PATH:/usr/lib64/openmpi/bin | |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/openmpi/lib | |
cd /work | |
./antares-xpansion-launcher -i examples/SmallTestFiveCandidates --allow-run-as-root | |
- uses: addnab/docker-run-action@v3 | |
name: run tests with 2 processes | |
with: | |
image: centos:run | |
shell: bash | |
options: -v ${{ github.workspace }}:/work | |
run: | | |
export PATH=$PATH:/usr/lib64/openmpi/bin | |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/openmpi/lib | |
cd /work | |
./antares-xpansion-launcher -i examples/SmallTestFiveCandidates -n 2 --allow-run-as-root | |
release: | |
runs-on: ubuntu-latest | |
needs: [ build, userguide ] | |
if: github.event_name == 'release' && github.event.action == 'created' | |
steps: | |
- name: Download userguide | |
uses: actions/download-artifact@v4 | |
with: | |
name: user-guide | |
path: docs/ | |
- name: Download build assets | |
uses: actions/download-artifact@v3 #build use v3 | |
with: | |
name: ${{needs.build.outputs.TGZ_NAME}} | |
path: _build/ | |
- name: Download build assets single file | |
uses: actions/download-artifact@v3 | |
with: | |
name: ${{needs.build.outputs.SINGLE_FILE_NAME}} | |
path: . | |
- name: Get release | |
id: get_release | |
uses: bruceadams/get-release@main | |
- 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 }} _build/${{needs.build.outputs.TGZ_NAME}} | |
gh release upload --repo ${{env.GH_REPO}} ${{ steps.get_release.outputs.tag_name }} ${{needs.build.outputs.SINGLE_FILE_NAME}} |