build-linux #99
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: build-linux | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
schedule: | |
- cron: "0 18 * * 2,4" | |
jobs: | |
release: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
env: | |
GUROBI_HOME: "/opt/gurobi/linux64" | |
CPLEX_HOME: "/opt/ibm/ILOG/CPLEX_Studio2211" | |
STOPT_HOME: "/opt/StOpt" | |
SCIP_HOME: "/opt/scip" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: Setup conda | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
activate-environment: SMSpp_builder | |
environment-file: envs/environment.yaml | |
auto-activate-base: false | |
- name: Conda list | |
run: | | |
conda init | |
source ~/.bashrc | |
conda activate SMSpp_builder | |
conda list | |
conda init --reverse | |
- name: Install basic requirements | |
run: | | |
sudo apt-get update | |
sudo apt install build-essential cmake git | |
- name: Install Boost | |
run: | | |
sudo apt install libboost-dev | |
sudo apt install libboost-system-dev libboost-timer-dev libboost-mpi-dev libboost-random-dev | |
dpkg -l | grep boost | |
- name: Install NetCDF-C++ | |
run: | | |
sudo apt install libnetcdf-c++4-dev | |
- name: Install Eigen | |
run: | | |
sudo apt install libeigen3-dev | |
- name: Install CPLEX | |
run: | | |
conda init | |
source ~/.bashrc | |
conda activate SMSpp_builder | |
python ./scripts/gdrive_downloader.py ${{ secrets.CPLEX_INSTALLER }} ./cplex_studio2211.linux_x86_64.bin | |
conda init --reverse | |
echo "CPLEX installer downloaded" | |
chmod u+x cplex_studio2211.linux_x86_64.bin | |
sudo ./cplex_studio2211.linux_x86_64.bin -f ./installer.properties & | |
wait $! | |
export PATH="${PATH}:${CPLEX_HOME}/bin" | |
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${CPLEX_HOME}/lib" | |
echo "CPLEX_HOME: $CPLEX_HOME" | |
echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH" | |
echo "$CPLEX_HOME/bin" >> $GITHUB_PATH | |
sudo sh -c "echo '${CPLEX_HOME}/lib' > /etc/ld.so.conf.d/cplex.conf" | |
sudo ldconfig | |
- name: Install gurobi | |
run: | | |
wget https://packages.gurobi.com/10.0/gurobi10.0.2_linux64.tar.gz | |
tar -xvf ./gurobi10.0.2_linux64.tar.gz | |
mv ./gurobi1002 /opt/gurobi | |
export PATH="${PATH}:${GUROBI_HOME}/bin" | |
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib" | |
echo "GUROBI_HOME: $GUROBI_HOME" | |
echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH" | |
echo "$GUROBI_HOME/bin" >> $GITHUB_PATH | |
sudo sh -c "echo '${GUROBI_HOME}/lib' > /etc/ld.so.conf.d/gurobi.conf" | |
sudo ldconfig | |
- name: Install SCIP | |
run: | | |
sudo apt install gfortran libtbb-dev | |
curl -O https://www.scipopt.org/download/release/SCIPOptSuite-9.0.0-Linux-ubuntu22.sh | |
chmod u+x SCIPOptSuite-9.0.0-Linux-ubuntu22.sh | |
./SCIPOptSuite-9.0.0-Linux-ubuntu22.sh --prefix=/opt/scip --exclude-subdir --skip-license | |
sudo sh -c "echo '/opt/scip/lib' > /etc/ld.so.conf.d/scip.conf" | |
sudo ldconfig | |
echo "/opt/scip/bin" >> $GITHUB_PATH | |
- name: Install HiGHS | |
run: | | |
git clone https://github.com/ERGO-Code/HiGHS.git | |
cd HiGHS | |
mkdir build | |
cd build | |
cmake -DFAST_BUILD=ON -DCMAKE_INSTALL_PREFIX=/opt/HiGHS .. | |
cmake --build . | |
sudo cmake --install . | |
sudo sh -c "echo '/opt/HiGHS/lib' > /etc/ld.so.conf.d/highs.conf" | |
sudo ldconfig | |
echo "/opt/HiGHS/bin" >> $GITHUB_PATH | |
cd ../.. | |
- name: Install COIN-OR CoinUtils | |
run: | | |
sudo apt install coinor-libcoinutils-dev | |
- name: Install coinbrew | |
run: | | |
sudo apt install libbz2-dev liblapack-dev libopenblas-dev | |
curl -O https://raw.githubusercontent.com/coin-or/coinbrew/master/coinbrew | |
chmod u+x coinbrew | |
sudo ./coinbrew build CoinUtils --latest-release \ | |
--skip-dependencies \ | |
--prefix=/opt/coin-or \ | |
--tests=none | |
- name: Install COIN-OR OSI/CLP | |
run: | | |
sudo apt install coinor-libclp-dev coinor-libosi-dev | |
GUROBI_LIB_DIR="$GUROBI_HOME/lib" | |
GUROBI_INCLUDE_DIR="$GUROBI_HOME/include" | |
CPLEX_LIB_DIR=`ls -bd1 $CPLEX_HOME/cplex/lib/*/static_pic | tail -n1` | |
CPLEX_INCLUDE_DIR="$CPLEX_HOME/cplex/include/ilcplex" | |
sudo ./coinbrew build Osi --latest-release \ | |
--skip-dependencies \ | |
--prefix=/opt/coin-or \ | |
--tests=none \ | |
--without-cplex \ | |
--with-gurobi \ | |
--with-gurobi-lib="-L$GUROBI_LIB_DIR -lgurobi100" \ | |
--with-gurobi-incdir="$GUROBI_INCLUDE_DIR" \ | |
--with-cplex \ | |
--with-cplex-lib="-L$CPLEX_LIB_DIR -lcplex -lpthread -lm -ldl" \ | |
--with-cplex-incdir="$CPLEX_INCLUDE_DIR" | |
sudo ./coinbrew build Clp --latest-release \ | |
--skip-dependencies \ | |
--prefix=/opt/coin-or \ | |
--tests=none | |
# CPLEX_LIB_DIR=`ls -bd1 $CPLEX_HOME/cplex/lib/*/static_pic | tail -n1` | |
# CPLEX_INCLUDE_DIR="$CPLEX_HOME/cplex/include/ilcplex" | |
# --with-cplex \ | |
# --with-cplex-lib="-L$CPLEX_LIB_DIR -lcplex -lpthread -lm -ldl" \ | |
# --with-cplex-incdir="$CPLEX_INCLUDE_DIR" \ | |
- name: Install StOpt | |
run: | | |
sudo apt install zlib1g-dev libbz2-dev | |
git clone https://gitlab.com/stochastic-control/StOpt | |
cd StOpt | |
mkdir build | |
cd build | |
cmake -DBUILD_PYTHON=OFF -DBUILD_TEST=OFF .. | |
cmake --build . | |
sudo cmake --install . --prefix /opt/StOpt | |
cd ../.. | |
echo "/opt/StOpt" >> $GITHUB_PATH | |
- name: Clone SMSpp | |
run: | | |
git clone -b develop --recurse-submodules https://gitlab.com/smspp/smspp-project.git | |
- name: Compile SMSpp | |
run: | | |
cd smspp-project | |
mkdir build | |
cd build | |
cmake .. | |
cmake --build . --config Release | |
sudo cmake --install . --prefix /opt/smspp | |
echo "/opt/smspp/bin" >> $GITHUB_PATH | |
- name: Test SMSpp - UCBlockSolver | |
run: | | |
cd ./smspp-project/tools/ucblock_solver/examples | |
ucblock_solver thermalunit_block.nc4 -S uc_solverconfig.txt | |
# chmod u+x ../../../build/tools/ucblock_solver/ucblock_solver | |
# ../../../build/tools/ucblock_solver/ucblock_solver thermalunit_block.nc4 -S uc_solverconfig.txt | |
- name: Test SMSpp - InvestmentBlockTest | |
run: | | |
cd ./smspp-project/InvestmentBlock/test/instance-1/ | |
chmod u+x ../../../build/InvestmentBlock/test/InvestmentBlock_test | |
../../../build/InvestmentBlock/test/InvestmentBlock_test -c ../config/ -S ../config/BSPar.txt InvestmentBlock.nc4 | |
- name: Test PyPSA - Dispatch 1-node - only thermal | |
run: | | |
conda init | |
source ~/.bashrc | |
conda activate SMSpp_builder | |
snakemake -j 4 -call verify_dispatch --configfile ./configs/microgrid_T_1N.yaml | |
- name: Test PyPSA - Dispatch 1-node - all resources except store | |
run: | | |
conda init | |
source ~/.bashrc | |
conda activate SMSpp_builder | |
snakemake -j 4 -call verify_dispatch --configfile ./configs/microgrid_ALLbutStore_1N.yaml | |
- name: Test PyPSA - Dispatch 2-node - only thermal | |
run: | | |
conda init | |
source ~/.bashrc | |
conda activate SMSpp_builder | |
snakemake -j 4 -call verify_dispatch --configfile ./configs/microgrid_T_2N.yaml | |
- name: Test PyPSA - Dispatch 5-node - all resources | |
run: | | |
conda init | |
source ~/.bashrc | |
conda activate SMSpp_builder | |
snakemake -j 4 -call verify_dispatch --configfile ./configs/microgrid_ALL_5N.yaml | |
- name: Test PyPSA - Store and Link 3-nodes | |
run: | | |
conda init | |
source ~/.bashrc | |
conda activate SMSpp_builder | |
snakemake -j 4 -call verify_dispatch --configfile ./configs/microgrid_S_2N.yaml | |
- name: Test PyPSA - Transformer 2-nodes | |
run: | | |
conda init | |
source ~/.bashrc | |
conda activate SMSpp_builder | |
snakemake -j 4 -call verify_dispatch --configfile ./configs/microgrid_Tr_2N.yaml |