Upgrade ssc to extrapolate timeseries on all of the fun yearly to dai… #4487
This file contains hidden or 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: CI | |
| on: | |
| push: | |
| pull_request: | |
| env: | |
| # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | |
| BUILD_TYPE: Release | |
| ORTOOLS_VER: "9.14" | |
| ORTOOLS_RELEASE: "6206" | |
| jobs: | |
| build-on-ubuntu: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Setup cmake | |
| uses: jwlawson/actions-setup-cmake@v2 | |
| with: | |
| cmake-version: '3.24.x' | |
| - name: Test cmake version | |
| run: cmake --version | |
| - name: Set relative paths | |
| run: | | |
| GTEST=$GITHUB_WORKSPACE/googletest | |
| echo "GTEST=$GTEST" >> $GITHUB_ENV | |
| SSCDIR=$GITHUB_WORKSPACE/ssc | |
| echo "SSCDIR=$SSCDIR" >> $GITHUB_ENV | |
| ORTOOLSDIR=$GITHUB_WORKSPACE/or-tools_x86_64_Ubuntu-24.04_cpp_v$ORTOOLS_VER.$ORTOOLS_RELEASE | |
| echo "ORTOOLSDIR=$ORTOOLSDIR" >> $GITHUB_ENV | |
| - name: Download OR-Tools | |
| if: steps.cached-ortools-restore.outputs.cache-hit != 'true' | |
| shell: bash | |
| run: | | |
| curl -L https://github.com/google/or-tools/releases/download/v$ORTOOLS_VER/or-tools_amd64_ubuntu-24.04_cpp_v$ORTOOLS_VER.$ORTOOLS_RELEASE.tar.gz -o or-tools-$ORTOOLS_VER.tar.gz | |
| tar xvzf or-tools-$ORTOOLS_VER.tar.gz | |
| - name: Get cached GTest | |
| uses: actions/cache@v4 | |
| id: cachedgtest | |
| with: | |
| path: ${{env.GTEST}}/ | |
| key: gtest-ubuntu | |
| - name: Clone Gtest | |
| if: steps.cachedgtest.outputs.cache-hit != 'true' | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: google/googletest | |
| path: googletest | |
| - name: build Gtest | |
| if: steps.cachedgtest.outputs.cache-hit != 'true' | |
| run: | | |
| export | |
| mkdir ${GTEST}/build | |
| cd ${GTEST}/build | |
| cmake -DCMAKE_CXX_FLAGS=-std=c++17 .. | |
| make | |
| - name: Checkout SSC | |
| uses: actions/checkout@v4 | |
| with: | |
| path: ssc | |
| - name: Build SSC | |
| shell: bash | |
| run: | | |
| # Downloaded OR-Tools has CoinOR enabled | |
| mkdir $SSCDIR/build | |
| cd $SSCDIR/build | |
| cmake -DCMAKE_CONFIGURATION_TYPES="Release" -DENABLE_COVERAGE=1 -DSAM_SKIP_AUTOGEN=0 -DSAMAPI_EXPORT=1 -DSAM_SKIP_TOOLS=1 -DSAMPRIVATE=1 -DUSE_XPRESS=0 -DUSE_COINOR=1 -DCMAKE_SYSTEM_VERSION=10.0 -DCMAKE_SYSTEM_PREFIX_PATH=${ORTOOLSDIR} -Dabsl_DIR=${ORTOOLSDIR}\lib\cmake\absl" -Dutf8_range_DIR=${ORTOOLSDIR}\lib\cmake\utf8_range" .. | |
| make -j4 | |
| - name: Test | |
| # Turn off fast fail for when the landbosse tests write to cerr | |
| run: | | |
| set -e | |
| exec 3>&1 1>> ${SSCDIR}/build/test/gtest.log 2>&1 | |
| ${SSCDIR}/build/test/Test | tee /dev/fd/3 | |
| exit ${PIPESTATUS[0]} | |
| - name: Compare Test Times | |
| run: | | |
| pip install pandas requests | |
| python ${SSCDIR}/test/compare_elapsed_time.py gtest_log ${SSCDIR}/build/test/gtest.log | |
| - name: Upload Test Times CSV | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: SSC Linux Test Time Elapsed | |
| path: | | |
| ${{env.SSCDIR}}/build/test/gtest_elapsed_times.csv | |
| - name: Upload Shared Libraries | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: SSC Linux Shared Libraries | |
| path: | | |
| ${{env.SSCDIR}}/build/ssc/libssc.so | |
| ${{env.SSCDIR}}/build/ssc/ssc.so | |
| build-on-mac: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [macos-14-large] | |
| steps: | |
| - name: Setup cmake | |
| uses: jwlawson/actions-setup-cmake@v2 | |
| with: | |
| cmake-version: '3.24.x' | |
| - name: Test cmake version | |
| run: cmake --version | |
| - name: Set relative paths | |
| run: | | |
| GTEST=$GITHUB_WORKSPACE/googletest | |
| echo "GTEST=$GTEST" >> $GITHUB_ENV | |
| SSCDIR=$GITHUB_WORKSPACE/ssc | |
| echo "SSCDIR=$SSCDIR" >> $GITHUB_ENV | |
| ORTOOLSDIR=$GITHUB_WORKSPACE/or-tools_x86_64_macOS-15.5_cpp_v$ORTOOLS_VER.$ORTOOLS_RELEASE | |
| echo "ORTOOLSDIR=$ORTOOLSDIR" >> $GITHUB_ENV | |
| - name: Download OR-Tools | |
| if: steps.cached-ortools-restore.outputs.cache-hit != 'true' | |
| shell: bash | |
| run: | | |
| curl -L https://github.com/google/or-tools/releases/download/v$ORTOOLS_VER/or-tools_x86_64_macOS-15.5_cpp_v$ORTOOLS_VER.$ORTOOLS_RELEASE.tar.gz -o or-tools-$ORTOOLS_VER.tar.gz | |
| tar xvzf or-tools-$ORTOOLS_VER.tar.gz | |
| - name: Get cached GTest | |
| uses: actions/cache@v4 | |
| id: cachedgtest | |
| with: | |
| path: ${{env.GTEST}}/ | |
| key: ortools-${{ matrix.os }} | |
| - name: Clone Gtest | |
| if: steps.cachedgtest.outputs.cache-hit != 'true' | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: google/googletest | |
| path: googletest | |
| - name: build Gtest | |
| if: steps.cachedgtest.outputs.cache-hit != 'true' | |
| run: | | |
| export | |
| mkdir ${GTEST}/build | |
| cd ${GTEST}/build | |
| cmake -DCMAKE_CXX_FLAGS=-std=c++17 .. | |
| make | |
| - name: Checkout SSC | |
| uses: actions/checkout@v4 | |
| with: | |
| path: ssc | |
| - name: Configure CMake | |
| # Configure cmake to build ssc tests but not tools | |
| run: | | |
| mkdir ${SSCDIR}/build | |
| cd ${SSCDIR}/build | |
| cmake .. -DCMAKE_BUILD_TYPE=Release -DSAM_SKIP_TOOLS=1 -DSAMAPI_EXPORT=0 -DCMAKE_INSTALL_PREFIX=${ORTOOLSDIR} | |
| - name: Build | |
| # Build your program with the given configuration | |
| run: | | |
| cd ${SSCDIR}/build | |
| make -j3 | |
| - name: Test | |
| # Turn off fast fail for when the landbosse tests write to cerr | |
| run: | | |
| set -e | |
| exec 3>&1 1>> ${SSCDIR}/build/test/gtest.log 2>&1 | |
| ${SSCDIR}/build/test/Test | tee /dev/fd/3 | |
| exit ${PIPESTATUS[0]} | |
| - name: Compare Test Times | |
| run: | | |
| pip install pandas requests | |
| python ${SSCDIR}/test/compare_elapsed_time.py gtest_log ${SSCDIR}/build/test/gtest.log | |
| - name: Upload Test Times CSV | |
| if: ${{ matrix.os == 'macos-latest' }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: SSC Mac Arm Test Time Elapsed | |
| path: | | |
| ${{env.SSCDIR}}/build/test/gtest_elapsed_times.csv | |
| - name: Upload Test Times CSV | |
| if: ${{ matrix.os != 'macos-latest' }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: SSC Mac Intel Test Time Elapsed | |
| path: | | |
| ${{env.SSCDIR}}/build/test/gtest_elapsed_times.csv | |
| - name: Upload Shared Libraries | |
| if: ${{ matrix.os == 'macos-latest' }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: SSC Mac Arm Shared Libraries | |
| path: | | |
| ${{env.SSCDIR}}/build/ssc/libssc.dylib | |
| ${{env.SSCDIR}}/build/ssc/ssc.dylib | |
| - name: Upload Shared Libraries | |
| if: ${{ matrix.os != 'macos-latest' }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: SSC Mac Intel Shared Libraries | |
| path: | | |
| ${{env.SSCDIR}}/build/ssc/libssc.dylib | |
| ${{env.SSCDIR}}/build/ssc/ssc.dylib | |
| build-on-windows: | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup cmake | |
| uses: jwlawson/actions-setup-cmake@v2 | |
| with: | |
| cmake-version: '3.24.x' | |
| - name: Test cmake version | |
| run: cmake --version | |
| - name: Set relative paths | |
| shell: bash | |
| run: | | |
| GTEST=$GITHUB_WORKSPACE/googletest | |
| echo "GTEST=$GTEST" >> $GITHUB_ENV | |
| SSCDIR=$GITHUB_WORKSPACE/ssc | |
| echo "SSCDIR=$SSCDIR" >> $GITHUB_ENV | |
| ORTOOLSDIR=$GITHUB_WORKSPACE/or-tools_x64_VisualStudio2022_cpp_v$ORTOOLS_VER.$ORTOOLS_RELEASE | |
| echo "ORTOOLSDIR=$ORTOOLSDIR" >> $GITHUB_ENV | |
| - name: Download OR-Tools | |
| if: steps.cached-ortools-restore.outputs.cache-hit != 'true' | |
| shell: bash | |
| run: | | |
| curl -L https://github.com/google/or-tools/releases/download/v$ORTOOLS_VER/or-tools_x64_VisualStudio2022_cpp_v$ORTOOLS_VER.$ORTOOLS_RELEASE.zip -o or-tools-$ORTOOLS_VER.zip | |
| 7z x or-tools-$ORTOOLS_VER.zip | |
| - name: Get cached GTest | |
| uses: actions/cache@v4 | |
| id: cachedgtest | |
| with: | |
| path: ${{env.GTEST}}/ | |
| key: gtest-windows | |
| - name: Clone Gtest | |
| if: steps.cachedgtest.outputs.cache-hit != 'true' | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: google/googletest | |
| path: googletest | |
| - name: build Gtest | |
| if: steps.cachedgtest.outputs.cache-hit != 'true' | |
| shell: bash | |
| run: | | |
| mkdir ${GTEST}/build | |
| cd ${GTEST}/build | |
| cmake -Dgtest_force_shared_crt=ON .. | |
| cmake --build . --config Release -j4 | |
| - name: Checkout SSC | |
| uses: actions/checkout@v4 | |
| with: | |
| path: ssc | |
| - name: Build SSC | |
| shell: bash | |
| run: | | |
| # Downloaded OR-Tools has CoinOR enabled | |
| mkdir $SSCDIR/build | |
| cd $SSCDIR/build | |
| cmake -G "Visual Studio 17 2022" -DCMAKE_CONFIGURATION_TYPES="Release" -DSAM_SKIP_AUTOGEN=0 -DSAMAPI_EXPORT=1 -DSAM_SKIP_TOOLS=1 -DSAMPRIVATE=1 -DUSE_XPRESS=0 -DUSE_COINOR=1 -DCMAKE_SYSTEM_VERSION=10.0 -DCMAKE_SYSTEM_PREFIX_PATH=${ORTOOLSDIR} -Dabsl_DIR=${ORTOOLSDIR}\lib\cmake\absl" -Dutf8_range_DIR=${ORTOOLSDIR}\lib\cmake\utf8_range" .. | |
| cmake --build . --config Release -j4 --target Test | |
| cp ssc/Release/* test/Release | |
| - name: Test | |
| shell: bash | |
| run: | | |
| cd ${SSCDIR}/build/test/Release | |
| LOG_FILE=${SSCDIR}/build/test/gtest.log | |
| exec > >(tee ${LOG_FILE}) 2>&1 | |
| ./Test.exe | |
| - name: Compare Test Times | |
| run: | | |
| pip install pandas requests | |
| python ${SSCDIR}/test/compare_elapsed_time.py gtest_log ${SSCDIR}/build/test/gtest.log | |
| shell: bash | |
| - name: Upload Artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: SSC Windows Test Time Elapsed | |
| path: | | |
| ${{env.SSCDIR}}\build\test\gtest_elapsed_times.csv | |
| - name: Upload Artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: SSC Windows Shared Libraries | |
| path: | | |
| ${{env.SSCDIR}}\build\ssc\Release\ssc.dll |