Skip to content

Upgrade ssc to extrapolate timeseries on all of the fun yearly to dai… #4487

Upgrade ssc to extrapolate timeseries on all of the fun yearly to dai…

Upgrade ssc to extrapolate timeseries on all of the fun yearly to dai… #4487

Workflow file for this run

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