Skip to content

rte-france/or-tools-rte@'v9.10-rte1.2-test-2' + rte-france/or-tools@'main' #108

rte-france/or-tools-rte@'v9.10-rte1.2-test-2' + rte-france/or-tools@'main'

rte-france/or-tools-rte@'v9.10-rte1.2-test-2' + rte-france/or-tools@'main' #108

Workflow file for this run

name: Ubuntu
run-name: rte-france/or-tools-rte@'${{github.ref_name}}' + rte-france/or-tools@'${{ github.event.inputs.rtefrance_ortools_branch || 'main' }}'
on:
workflow_dispatch:
inputs:
rtefrance_ortools_branch:
description: 'rte-france/or-tools branch name'
required: true
default: 'main'
push:
branches:
- main
- feature/*
- merge*
- fix/*
- release/*
release:
types: [ created ]
env:
GITHUB_TOKEN: ${{ github.token }}
jobs:
build:
name: ${{ matrix.os }} shrd=${{ matrix.cmake.shared }} sirius=${{ matrix.sirius }} java=${{ matrix.cmake.java }} dotnet=${{ matrix.cmake.dotnet }} python=${{ matrix.cmake.python }}-${{ matrix.cmake.python-version }}
runs-on: ${{ matrix.os }}
env:
XPRESSDIR: ${{ github.workspace }}/xpressmp
XPAUTH_PATH: ${{ github.workspace }}/xpressmp/bin/xpauth.xpr
SIRIUS_RELEASE_TAG: ${{ matrix.sirius-release-tag }}
SIRIUS_INSTALL_DIR: ${{ github.workspace }}/sirius_install
SIRIUS: ${{ github.workspace }}/sirius_install/bin
RELEASE_CREATED: ${{ github.event_name == 'release' && github.event.action == 'created' }}
strategy:
fail-fast: false
matrix:
os: ["ubuntu-20.04"]
cmake: [
{shared: OFF, java: OFF, dotnet: OFF, python: OFF, python-version: "3.8", publish-cxx-or: ON},
{shared: ON, java: ON, dotnet: ON, python: OFF, python-version: "3.8", publish-cxx-or: ON},
{shared: ON, java: OFF, dotnet: OFF, python: ON, python-version: "3.8", publish-cxx-or: OFF},
{shared: ON, java: OFF, dotnet: OFF, python: ON, python-version: "3.9", publish-cxx-or: OFF},
{shared: ON, java: OFF, dotnet: OFF, python: ON, python-version: "3.10", publish-cxx-or: OFF},
]
sirius: [ON, OFF]
sirius-release-tag: [antares-integration-v1.4]
steps:
- name: Checkout this repository
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.cmake.python-version }}
- name: set or-tools repo vars release
if: ${{ env.RELEASE_CREATED == 'true' }}
shell: bash
run: |
OR_REPO="https://github.com/google/or-tools.git"
OR_REF="v9.10"
echo "OR_REPO=$OR_REPO" >> $GITHUB_ENV
echo "OR_REF=$OR_REF" >> $GITHUB_ENV
- name: set or-tools repo vars not release
if: ${{ env.RELEASE_CREATED == 'false' }}
shell: bash
run: |
OR_REPO="https://github.com/rte-france/or-tools.git"
OR_REF=${{ github.event.inputs.rtefrance_ortools_branch || 'main' }}
echo "OR_REPO=$OR_REPO" >> $GITHUB_ENV
echo "OR_REF=$OR_REF" >> $GITHUB_ENV
- name: Install GCC10 and others
shell: bash
run: |
sudo apt update
sudo apt install gcc-10 g++-10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 110 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10
sudo apt install -yq build-essential lsb-release zlib1g-dev
- name: Swig install
run: |
sudo apt install -y swig
swig -version
- name: Update Path
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: install python packages
run: >
python -m pip install absl-py mypy mypy-protobuf
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.26.x'
- name: Setup .NET 6.0
if: ${{ matrix.cmake.dotnet == 'ON' }}
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
- name: Set-up Xpress with pip for Ubuntu
shell: bash
run: |
python -m pip install "xpress>=9.2,<9.3"
echo ${{ env.pythonLocation }}
XPRESS_DIR=${{ env.pythonLocation }}/lib/python${{ matrix.cmake.python-version }}/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: Download Sirius
if: ${{ matrix.sirius == 'ON' }}
shell: bash
run: |
zipfile=${{ matrix.os }}_sirius-solver.zip
wget https://github.com/rte-france/sirius-solver/releases/download/${{ env.SIRIUS_RELEASE_TAG }}/$zipfile
unzip $zipfile
mv "${{ matrix.os }}_sirius-solver-install" sirius_install
echo "LD_LIBRARY_PATH=$PWD/sirius_install/lib" >> $GITHUB_ENV
echo "SIRIUS_CMAKE_DIR=$PWD/sirius_install/cmake" >> $GITHUB_ENV
- name: ccache
if: ${{ startsWith(matrix.os, 'ubuntu') }}
uses: hendrikmuhs/[email protected]
with:
key: ${{ matrix.os }}-${{ matrix.cmake.shared }}-${{ matrix.sirius }}-${{ matrix.cmake.dotnet }}-${{ matrix.cmake.java }}-${{ matrix.cmake.python }}-${{ matrix.cmake.python-version }}
- name: Check cmake
run: cmake --version
- name: Configure OR-Tools
run: >
cmake -S . -B build
-DCMAKE_BUILD_TYPE=Release
-Dortools_REPO=${{ env.OR_REPO }}
-Dortools_REF=${{ env.OR_REF }}
-DBUILD_SHARED_LIBS=${{ matrix.cmake.shared }}
-DBUILD_PYTHON=${{ matrix.cmake.python }}
-DBUILD_JAVA=${{ matrix.cmake.java }}
-DBUILD_DOTNET=${{ matrix.cmake.dotnet }}
-DBUILD_EXAMPLES=${{ env.RELEASE_CREATED == 'true' && 'OFF' || 'ON' }}
-DBUILD_DEPS=ON
-DUSE_SIRIUS=${{ matrix.sirius }}
-Dsirius_solver_DIR="${{ env.SIRIUS_CMAKE_DIR }}"
-DBUILD_SAMPLES=OFF
-DCMAKE_INSTALL_PREFIX="build/install"
-DUSE_HIGHS=OFF
- name: Build OR-Tools Linux
run: >
cmake
--build build
--config Release
--target all install -j4
- name: run tests not xpress
if: ${{ matrix.cmake.shared == 'ON' && (matrix.cmake.python != 'ON' || matrix.cmake.python-version != '3.8' ) }}
working-directory: ./build/
run: >
ctest
-C Release
--output-on-failure
-E "(_xpress|_sirius|python_init_)"
- name: run tests xpress
working-directory: ./build/
run: >
ctest
-V
-C Release
--output-on-failure
-R "_xpress"
- name: run tests sirius
working-directory: ./build/
run: >
ctest
-V
-C Release
--output-on-failure
-R "sirius"
- name: set name variables
id: names
shell: bash
run: |
SHARED=${{ matrix.cmake.shared }}
[ $SHARED == "ON" ] && WITH_SHARED="_shared" || WITH_SHARED="_static"
SIRIUS=${{ matrix.sirius }}
[ $SIRIUS == "ON" ] && WITH_SIRIUS="_sirius" || WITH_SIRIUS=""
OS="_${{ matrix.os }}"
APPENDIX="${OS}${WITH_SIRIUS}"
echo "appendix=$APPENDIX" >> $GITHUB_OUTPUT
APPENDIX_WITH_SHARED="${OS}${WITH_SHARED}${WITH_SIRIUS}"
echo "appendix_with_shared=$APPENDIX_WITH_SHARED" >> $GITHUB_OUTPUT
- name: Prepare OR-Tools install
if: ${{ matrix.cmake.publish-cxx-or == 'ON' }}
id: or-install
shell: bash
run: |
cd build
ARCHIVE_NAME="ortools_cxx${{ steps.names.outputs.appendix_with_shared }}.zip"
ARCHIVE_PATH="${{ github.workspace }}/build/${ARCHIVE_NAME}"
zip -r "$ARCHIVE_PATH" ./install
echo "archive_name=$ARCHIVE_NAME" >> $GITHUB_OUTPUT
echo "archive_path=$ARCHIVE_PATH" >> $GITHUB_OUTPUT
- name: Upload OR-Tools install artifact
uses: actions/upload-artifact@v4
if: ${{ matrix.cmake.publish-cxx-or == 'ON' }}
with:
name: ${{ steps.or-install.outputs.archive_name }}
path: ${{ steps.or-install.outputs.archive_path }}
- name: Publish OR-Tools install asset
if: ${{ env.RELEASE_CREATED == 'true' && matrix.cmake.publish-cxx-or == 'ON' }}
uses: softprops/action-gh-release@v2
with:
files: ${{ steps.or-install.outputs.archive_path }}
- name: prepare OR-Tools wheel
if: ${{ matrix.cmake.python == 'ON' }}
id: wheel
shell: bash
run: |
cd ./build/_deps/ortools-build/python/dist
MY_DIR="ortools_python-${{ matrix.cmake.python-version }}${{ steps.names.outputs.appendix }}"
mkdir ${MY_DIR}
cp *.whl "${MY_DIR}"
ARCHIVE_NAME="${MY_DIR}.zip"
ARCHIVE_PATH="${{ github.workspace }}/build/${ARCHIVE_NAME}"
zip -r "${ARCHIVE_PATH}" "${MY_DIR}"
echo "archive_name=$ARCHIVE_NAME" >> $GITHUB_OUTPUT
echo "archive_path=$ARCHIVE_PATH" >> $GITHUB_OUTPUT
- name: Upload OR-Tools wheel artifact
if: ${{ matrix.cmake.python == 'ON' }}
uses: actions/upload-artifact@v4
with:
name: ${{ steps.wheel.outputs.archive_name }}
path: ${{ steps.wheel.outputs.archive_path }}
- name: Publish OR-Tools wheel asset
if: ${{ env.RELEASE_CREATED == 'true' && matrix.cmake.python == 'ON' }}
uses: softprops/action-gh-release@v2
with:
files: ${{ steps.wheel.outputs.archive_path }}
- name: prepare OR-Tools jar
if: ${{ matrix.cmake.java == 'ON' }}
id: jar
shell: bash
run: |
cd ./build/_deps/ortools-build/java
MY_DIR="ortools_java${{ steps.names.outputs.appendix }}"
mkdir ${MY_DIR}
cp ortools-*/target/*.jar "${MY_DIR}"
ARCHIVE_NAME="${MY_DIR}.zip"
ARCHIVE_PATH="${{ github.workspace }}/build/${ARCHIVE_NAME}"
zip -r "${ARCHIVE_PATH}" "${MY_DIR}"
echo "archive_name=$ARCHIVE_NAME" >> $GITHUB_OUTPUT
echo "archive_path=$ARCHIVE_PATH" >> $GITHUB_OUTPUT
- name: Upload OR-Tools jar artifact
if: ${{ matrix.cmake.java == 'ON' }}
uses: actions/upload-artifact@v4
with:
name: ${{ steps.jar.outputs.archive_name }}
path: ${{ steps.jar.outputs.archive_path }}
- name: Publish OR-Tools jar asset
if: ${{ env.RELEASE_CREATED == 'true' && matrix.cmake.java == 'ON' }}
uses: softprops/action-gh-release@v2
with:
files: ${{ steps.jar.outputs.archive_path }}
- name: prepare OR-Tools dotnet
if: ${{ matrix.cmake.dotnet == 'ON' }}
id: dotnet
shell: bash
run: |
cd ./build/_deps/ortools-build/dotnet/packages/
MY_DIR="ortools_dotnet${{ steps.names.outputs.appendix }}"
mkdir ${MY_DIR}
cp Google.OrTools.*.nupkg "${MY_DIR}"
cp Google.OrTools.runtime.*.nupkg "${MY_DIR}"
ARCHIVE_NAME="${MY_DIR}.zip"
ARCHIVE_PATH="${{ github.workspace }}/build/${ARCHIVE_NAME}"
zip -r "${ARCHIVE_PATH}" "${MY_DIR}"
echo "archive_name=$ARCHIVE_NAME" >> $GITHUB_OUTPUT
echo "archive_path=$ARCHIVE_PATH" >> $GITHUB_OUTPUT
- name: Upload OR-Tools dotnet artifact
if: ${{ matrix.cmake.dotnet == 'ON' }}
uses: actions/upload-artifact@v4
with:
name: ${{ steps.dotnet.outputs.archive_name }}
path: ${{ steps.dotnet.outputs.archive_path }}
- name: Publish OR-Tools dotnet asset
if: ${{ env.RELEASE_CREATED == 'true' && matrix.cmake.dotnet == 'ON' }}
uses: softprops/action-gh-release@v2
with:
files: ${{ steps.dotnet.outputs.archive_path }}