Skip to content

Add GHA test

Add GHA test #30

Workflow file for this run

name: build
on:
pull_request:
push:
branches:
- master
tags:
- '*'
jobs:
windows_build:
runs-on: windows-2022
strategy:
fail-fast: true
matrix:
python-version: ["3.11"]
env:
PYTHON_VERSION: ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install lessmsi
run: |
curl -L -o D:\lessmsi.zip https://github.com/activescott/lessmsi/releases/download/v1.10.0/lessmsi-v1.10.0.zip
7z x D:\lessmsi.zip -oD:\lessmsi
echo "PATH=$env:PATH;D:\lessmsi" >> $env:GITHUB_ENV
- name: Test lessmsi
run: |
lessmsi h
- name: Create directory to store installers
run: |
New-Item -ItemType Directory -Force -Path "D:\installers"
- name: Cache Installers
id: cache-installers-windows
uses: actions/cache@v3
env:
cache-name: cache-installers-windows
with:
path: D:\installers
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.msi', '**/*.zip') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
- if: ${{ steps.cache-installers-windows.outputs.cache-hit != 'true' }}
name: Download Installers
run: |
curl -L -o D:\installers\gurobi.msi https://packages.gurobi.com/11.0/Gurobi-11.0.0-win64.msi
curl -L -o D:\installers\copt.zip https://pub.shanshu.ai/download/copt/7.0.6/win64/CardinalOptimizer-7.0.6-win64.zip
curl -L -o D:\installers\mosek.msi https://download.mosek.com/stable/10.1.22/moseksetupwin64x86.msi
- name: Setup Gurobi Installation
env:
GUROBI_WLS: ${{ secrets.GUROBI_WLS }}
run: |
lessmsi x D:\installers\gurobi.msi "D:\" gurobi_cl.exe
lessmsi x D:\installers\gurobi.msi "D:\" gurobi110.dll gurobi110.lib
lessmsi x D:\installers\gurobi.msi "D:\" gurobi_c.h
ls D:\SourceDir\gurobi1100\win64
# set environment variables
echo "GUROBI_HOME=D:\SourceDir\gurobi1100\win64" >> $env:GITHUB_ENV
echo "PATH=$env:PATH;D:\SourceDir\gurobi1100\win64\bin" >> $env:GITHUB_ENV
echo $env:GUROBI_HOME
# setup license using secrets
echo $env:GUROBI_WLS > D:\gurobi.lic
echo "GRB_LICENSE_FILE=D:\gurobi.lic" >> $env:GITHUB_ENV
- name: Test Gurobi
run: |
gurobi_cl
- name: Setup COPT Installation
env:
COPT_CLIENT_INI: ${{ secrets.COPT_CLIENT_INI }}
run: |
# unzip with 7zip
7z x D:\installers\copt.zip -oD:\
ls D:\copt70
# set environment variables
echo "COPT_HOME=D:\copt70" >> $env:GITHUB_ENV
echo "PATH=$env:PATH;D:\copt70\bin" >> $env:GITHUB_ENV
echo $env:COPT_HOME
# setup license using secrets
echo $env:COPT_CLIENT_INI > D:\client.ini
echo "COPT_LICENSE_DIR=D:\" >> $env:GITHUB_ENV
- name: Test COPT
run: |
copt_cmd -c "quit"
- name: Setup MOSEK Installation
env:
MOSEK_LICENSE: ${{ secrets.MOSEK_LICENSE }}
run: |
lessmsi x D:\installers\mosek.msi "D:\" msktestlic.exe
lessmsi x D:\installers\mosek.msi "D:\" mosek64_10_1.dll mosek64_10_1.lib
lessmsi x D:\installers\mosek.msi "D:\" mosek.h
ls D:\SourceDir\PFiles\Mosek\10.1\tools\platform\win64x86
# set environment variables
echo "MOSEK_10_1_BINDIR=D:\SourceDir\PFiles\Mosek\10.1\tools\platform\win64x86\bin" >> $env:GITHUB_ENV
echo "PATH=$env:PATH;D:\SourceDir\PFiles\Mosek\10.1\tools\platform\win64x86\bin" >> $env:GITHUB_ENV
echo $env:MOSEK_10_1_BINDIR
# setup license using secrets
echo $env:MOSEK_LICENSE > D:\mosek.lic
echo "MOSEKLM_LICENSE_FILE=D:\mosek.lic" >> $env:GITHUB_ENV
- name: Test MOSEK
run: |
msktestlic
- name: Install python deps
run: |
python -m pip install build pytest
- name: Build
run: |
python -m pip list
python -m pip install -v .
python -c "import pyoptinterface as poi; print(dir(poi))"
- name: Test
run: |
python -m pytest -v