Skip to content

solver-tests

solver-tests #178

Workflow file for this run

name: solver-tests
on:
workflow_dispatch:
# needed to allow julia-actions/cache to delete old caches that it has created
permissions:
actions: write
contents: read
jobs:
test-ubuntu:
name: ${{ matrix.package }}
runs-on: ubuntu-latest
env:
PACKAGE: ${{ matrix.package }}
strategy:
fail-fast: false
matrix:
include:
- package: 'JuMP'
- package: 'Convex'
- package: 'AmplNLWriter'
- package: 'BARON'
- package: 'Cbc'
- package: 'Clp'
- package: 'CPLEX'
- package: 'CSDP'
- package: 'DiffOpt'
- package: 'DSDP'
- package: 'Dualization'
- package: 'ECOS'
- package: 'GLPK'
- package: 'Gurobi'
- package: 'HiGHS'
- package: 'Hypatia'
- package: 'Ipopt'
- package: 'KNITRO'
- package: 'MiniZinc'
- package: 'MosekTools'
- package: 'MultiObjectiveAlgorithms'
- package: 'NEOSServer'
- package: 'NLopt'
- package: 'Pajarito'
- package: 'ParametricOptInterface'
- package: 'Pavito'
- package: 'PiecewiseLinearOpt'
- package: 'PolyJuMP'
- package: 'SCS'
- package: 'SDPA'
- package: 'SDPLR'
# - package: 'SDPNAL' # Requires MATLAB
# - package: 'SDPT3' # Requires MATLAB
# - package: 'SeduMi' # Requires MATLAB
- package: 'SumOfSquares'
- package: 'Xpress'
# External packages
- package: 'Alpine'
- package: 'BilevelJuMP'
- package: 'CATrustRegionMethod'
# - package: 'CDCS' # Missing CI
- package: 'CDDLib'
- package: 'Clarabel'
- package: 'COPT'
- package: 'COSMO'
- package: 'DAQP'
- package: 'DisjunctiveProgramming'
- package: 'EAGO'
# - package: 'GAMS' # Requires license
- package: 'FrankWolfe'
- package: 'InfiniteOpt'
- package: 'Juniper'
- package: 'LinearFractional'
- package: 'Loraine'
# - package: 'MadNLP' # TODO
- package: 'MAiNGO'
- package: 'Manopt'
- package: 'MathOptAI'
- package: 'MathOptSymbolicAD'
- package: 'MathOptSetDistances'
- package: 'Optim'
- package: 'OSQP'
- package: 'PATHSolver'
- package: 'Percival'
- package: 'Plasmo'
- package: 'PowerModels'
- package: 'ProxSDP'
- package: 'SCIP'
- package: 'SDDP'
- package: 'SetProg'
- package: 'SparseVariables'
- package: 'Tulip'
- package: 'UnitJuMP'
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: '1'
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-buildpkg@v1
# Setup BARON.jl
- name: Setup BARON
if: ${{ matrix.package == 'BARON' }}
shell: bash
# Writing a multiline string is hard. GitHub says:
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions#multiline-strings
#
# For multiline strings, you may use a delimiter with the following syntax.
#
# {name}<<{delimiter}
# {value}
# {delimiter}
#
# Their example goes on to use 'EOF' as the delimiter, which works so
# long as 'EOF' does not appear in the string. If you get the error:
#
# Run echo "SECRET_BARON_LICENSE='***
# Error: Unable to process file command 'env' successfully.
# Error: Invalid format '***'
#
# This is the most likely culprit.
run: |
{
echo "SECRET_BARON_LICENSE<<EOF"
echo "${{ secrets.BARON_LICENSE }}"
echo "EOF"
} >> $GITHUB_ENV
# Setup CPLEX.jl
- name: Setup CPLEX
if: ${{ matrix.package == 'CPLEX' }}
shell: bash
run: |
echo "SECRET_CPLEX_URL_2210=${{ secrets.CPLEX_URL_2210 }}" >> $GITHUB_ENV
echo "CPLEX_VERSION=2210" >> $GITHUB_ENV
# Setup Gurobi.jl
- name: Setup Gurobi
if: ${{ matrix.package == 'Gurobi' }}
shell: bash
run: echo "${{ secrets.GUROBI_LICENSE }}" > ~/gurobi.lic
# Setup KNITRO.jl
- name: Setup KNITRO
if: ${{ matrix.package == 'KNITRO' }}
shell: bash
run: |
echo "${{ secrets.KNITRO_LICENSE }}" > ~/artelys_lic.txt
echo "SECRET_KNITRO_URL=${{ secrets.KNITRO_URL }}" >> $GITHUB_ENV
echo "SECRET_KNITRO_LIBIOMP5=${{ secrets.KNITRO_LIBIOMP5 }}" >> $GITHUB_ENV
# Setup MathOptAI.jl
- name: Install Python
if: ${{ matrix.package == 'MathOptAI' }}
uses: actions/setup-python@v2
with:
python-version: '3.10'
- name: Setup MathOptAI
if: ${{ matrix.package == 'MathOptAI' }}
shell: bash
run: |
pip3 install torch --index-url https://download.pytorch.org/whl/cpu
pip3 install numpy
echo "JULIA_CONDAPKG_BACKEND=Null" >> $GITHUB_ENV
echo "JULIA_PYTHONCALL_EXE=python3" >> $GITHUB_ENV
# Setup Xpress.jl
- name: Setup Xpress
if: ${{ matrix.package == 'Xpress' }}
env:
SECRET_XPRESS_LICENSE: ${{ secrets.XPRESS_LICENSE }}
shell: bash
run: |
echo "${SECRET_XPRESS_LICENSE}" > /opt/xpauth.xpr
echo "XPRESS_JL_SKIP_LIB_CHECK=true" >> $GITHUB_ENV
echo "XPAUTH_PATH=/opt/xpauth.xpr" >> $GITHUB_ENV
- name: Run tests
shell: julia --color=yes {0}
run: |
import Pkg
Pkg.develop(Pkg.PackageSpec(; path = pwd()))
Pkg.develop(ENV["PACKAGE"])
Pkg.build(ENV["PACKAGE"])
Pkg.test(ENV["PACKAGE"])