Skip to content

solver-tests

solver-tests #161

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: 'InfiniteOpt'
- package: 'Juniper'
- package: 'LinearFractional'
- package: 'Loraine'
- package: 'MAiNGO'
# - package: 'MathOptAI' # Needs pytorch
- package: 'MathOptSymbolicAD'
- package: 'MathOptSetDistances'
- package: 'OSQP'
- package: 'PATHSolver'
- package: 'Percival'
- package: 'Plasmo'
- package: 'PowerModels'
- package: 'ProxSDP'
- package: 'SCIP'
- package: 'SDDP'
- package: 'SetProg'
- package: 'SparseVariables'
# - package: 'SDPAFamily' # Does not work on latest Julia
- package: 'Tulip'
- package: 'UnitJuMP'
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: '1'
- uses: julia-actions/cache@v2
with:
key: julia-${{ matrix.package }}
- uses: julia-actions/julia-buildpkg@v1
# Setup BARON.jl
- name: Add BARON secrets
if: ${{ matrix.package == 'BARON' }}
env:
SECRET_BARON_LICENSE: ${{ secrets.BARON_LICENSE }}
shell: bash
run: |
echo "SECRET_BARON_LICENSE=$SECRET_BARON_LICENSE" >> $GITHUB_ENV
# Setup CPLEX.jl
- name: Add CPLEX secrets
if: ${{ matrix.package == 'CPLEX' }}
env:
SECRET_CPLEX_URL_2210: ${{ secrets.CPLEX_URL_2210 }}
shell: bash
run: |
echo "CPLEX_URL_2210=$SECRET_CPLEX_URL_2210" >> $GITHUB_ENV
echo "CPLEX_VERSION=2210" >> $GITHUB_ENV
# Setup Gurobi.jl
- name: Add Gurobi secrets
if: ${{ matrix.package == 'Gurobi' }}
env:
SECRET_GUROBI_LICENSE: ${{ secrets.WLSLICENSE }}
shell: bash
run: |
mkdir -p /opt/gurobi
echo "$SECRET_GUROBI_LICENSE" > /opt/gurobi/gurobi.lic
# Setup KNITRO.jl
- name: Add KNITRO secrets
if: ${{ matrix.package == 'KNITRO' }}
env:
SECRET_KNITRO_LICENSE: ${{ secrets.KNITRO_LICENSE }}
SECRET_KNITRO_URL: ${{ secrets.KNITRO_URL }}
SECRET_KNITRO_LIBIOMP5: ${{ secrets.KNITRO_LIBIOMP5 }}
shell: bash
run: |
echo "$SECRET_KNITRO_LICENSE" > ~/artelys_lic.txt
echo "SECRET_KNITRO_URL=$SECRET_KNITRO_URL" >> $GITHUB_ENV
echo "SECRET_KNITRO_LIBIOMP5=$SECRET_KNITRO_LIBIOMP5" >> $GITHUB_ENV
# Setup Xpress.jl
- name: Add Xpress secrets
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"])