From b75b36c5e0952baa3213f460d6111b6893c9f491 Mon Sep 17 00:00:00 2001 From: eminyouskn Date: Fri, 13 Feb 2026 11:54:51 -0500 Subject: [PATCH] add KNITRO to CI --- .../actions/setup_optimizers_linux/action.yml | 23 ++++++++++++++++-- .../actions/setup_optimizers_macos/action.yml | 23 ++++++++++++++++-- .../setup_optimizers_windows/action.yml | 24 +++++++++++++++++-- .github/workflows/doc-build.yml | 7 +++--- .github/workflows/linux-build.yml | 9 +++---- .github/workflows/macos-build.yml | 9 +++---- .github/workflows/wheel.yml | 4 ++-- .github/workflows/windows-build.yml | 9 +++---- optimizer_version.toml | 1 + 9 files changed, 86 insertions(+), 23 deletions(-) diff --git a/.github/actions/setup_optimizers_linux/action.yml b/.github/actions/setup_optimizers_linux/action.yml index 5cb46b08..dda3bcaf 100644 --- a/.github/actions/setup_optimizers_linux/action.yml +++ b/.github/actions/setup_optimizers_linux/action.yml @@ -1,4 +1,5 @@ name: "Install optimizers on linux" +description: "Install optimizers and Setup licenses on linux" inputs: GUROBI_WLS: @@ -13,10 +14,14 @@ inputs: description: "..." required: false default: '' + KNITRO_LICENSE: + description: "..." + required: false + default: '' GITHUB_TOKEN: description: "..." required: true - CHECK_LICENSE: + CHECK_LICENSE: description: "..." required: true ARCH: @@ -92,7 +97,7 @@ runs: echo "PATH=${PATH}:${GUROBI_HOME}/bin" >> $GITHUB_ENV echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib" >> $GITHUB_ENV echo $GUROBI_HOME - + # setup license using secrets echo "$GUROBI_WLS" > ~/gurobi.lic echo "GRB_LICENSE_FILE=${HOME}/gurobi.lic" >> $GITHUB_ENV @@ -175,3 +180,17 @@ runs: shell: bash run: | ipopt -v + + - name: Setup KNITRO license + if: ${{ inputs.KNITRO_LICENSE != '' }} + shell: bash + env: + KNITRO_LICENSE: ${{ inputs.KNITRO_LICENSE }} + run: | + echo "$KNITRO_LICENSE" > ${HOME}/artelys_lic.txt + echo "ARTELYS_LICENSE=${HOME}/artelys_lic.txt" >> $GITHUB_ENV + - name: Install KNITRO (using pip) + if: ${{ inputs.KNITRO_LICENSE != '' }} + shell: bash + run: | + python -m pip install knitro diff --git a/.github/actions/setup_optimizers_macos/action.yml b/.github/actions/setup_optimizers_macos/action.yml index 74dc04de..997b8932 100644 --- a/.github/actions/setup_optimizers_macos/action.yml +++ b/.github/actions/setup_optimizers_macos/action.yml @@ -1,4 +1,5 @@ name: "Install optimizers on macOS" +description: "Install optimizers and Setup licenses on macOS" inputs: GUROBI_WLS: @@ -13,10 +14,14 @@ inputs: description: "..." required: false default: '' + KNITRO_LICENSE: + description: "..." + required: false + default: '' GITHUB_TOKEN: description: "..." required: true - CHECK_LICENSE: + CHECK_LICENSE: description: "..." required: true ARCH: @@ -83,7 +88,7 @@ runs: echo "DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:${GUROBI_HOME}/lib" >> $GITHUB_ENV echo $GUROBI_HOME ls $GUROBI_HOME - + # setup license using secrets echo "$GUROBI_WLS" > ~/gurobi.lic echo "GRB_LICENSE_FILE=${HOME}/gurobi.lic" >> $GITHUB_ENV @@ -173,3 +178,17 @@ runs: shell: bash run: | ipopt -v + + - name: Setup KNITRO License + if: ${{ inputs.KNITRO_LICENSE != '' }} + shell: bash + env: + KNITRO_LICENSE: ${{ inputs.KNITRO_LICENSE }} + run: | + echo "$KNITRO_LICENSE" > ~/artelys_lic.txt + echo "ARTELYS_LICENSE=${HOME}/artelys_lic.txt" >> $GITHUB_ENV + - name: Install KNITRO (using pip) + if: ${{ inputs.KNITRO_LICENSE != '' }} + shell: bash + run: | + python -m pip install knitro diff --git a/.github/actions/setup_optimizers_windows/action.yml b/.github/actions/setup_optimizers_windows/action.yml index fa126a9b..f4afa13e 100644 --- a/.github/actions/setup_optimizers_windows/action.yml +++ b/.github/actions/setup_optimizers_windows/action.yml @@ -1,4 +1,5 @@ name: "Install optimizers on windows" +description: "Install optimizers and Setup licenses on windows" inputs: GUROBI_WLS: @@ -13,10 +14,14 @@ inputs: description: "..." required: false default: '' + KNITRO_LICENSE: + description: "..." + required: false + default: '' GITHUB_TOKEN: description: "..." required: true - CHECK_LICENSE: + CHECK_LICENSE: description: "..." required: true @@ -78,7 +83,7 @@ runs: echo "GUROBI_HOME=D:\SourceDir\gurobi1300\win64" >> $env:GITHUB_ENV echo "PATH=$env:PATH;D:\SourceDir\gurobi1300\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 @@ -144,3 +149,18 @@ runs: shell: pwsh run: | ipopt -v + + - name: Setup KNITRO License + if: ${{ inputs.KNITRO_LICENSE != '' }} + shell: pwsh + env: + KNITRO_LICENSE: ${{ inputs.KNITRO_LICENSE }} + run: | + # setup license using secrets + echo $env:KNITRO_LICENSE > D:\artelys_lic.txt + echo "ARTELYS_LICENSE=D:\artelys_lic.txt" >> $env:GITHUB_ENV + - name: Install KNITRO (using pip) + if: ${{ inputs.KNITRO_LICENSE != '' }} + shell: pwsh + run: | + python -m pip install knitro diff --git a/.github/workflows/doc-build.yml b/.github/workflows/doc-build.yml index ce274e1d..7daa7ebf 100644 --- a/.github/workflows/doc-build.yml +++ b/.github/workflows/doc-build.yml @@ -1,9 +1,9 @@ name: gh-pages on: - push: - branches: - - master + push: + branches: + - master permissions: contents: write @@ -32,6 +32,7 @@ jobs: GUROBI_WLS: ${{ secrets.GUROBI_WLS }} COPT_CLIENT_INI: ${{ secrets.COPT_CLIENT_INI }} MOSEK_LICENSE: ${{ secrets.MOSEK_LICENSE }} + KNITRO_LICENSE: ${{ secrets.KNITRO_LICENSE }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CHECK_LICENSE: false diff --git a/.github/workflows/linux-build.yml b/.github/workflows/linux-build.yml index c2166df8..e12630f1 100644 --- a/.github/workflows/linux-build.yml +++ b/.github/workflows/linux-build.yml @@ -1,10 +1,10 @@ name: linux-build on: - pull_request: - push: - branches: - - master + pull_request: + push: + branches: + - master jobs: @@ -37,6 +37,7 @@ jobs: GUROBI_WLS: ${{ secrets.GUROBI_WLS }} COPT_CLIENT_INI: ${{ secrets.COPT_CLIENT_INI }} MOSEK_LICENSE: ${{ secrets.MOSEK_LICENSE }} + KNITRO_LICENSE: ${{ secrets.KNITRO_LICENSE }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CHECK_LICENSE: true ARCH: ${{ runner.arch }} diff --git a/.github/workflows/macos-build.yml b/.github/workflows/macos-build.yml index 9b92c0e2..42e262d1 100644 --- a/.github/workflows/macos-build.yml +++ b/.github/workflows/macos-build.yml @@ -1,10 +1,10 @@ name: macos-build on: - pull_request: - push: - branches: - - master + pull_request: + push: + branches: + - master jobs: @@ -34,6 +34,7 @@ jobs: GUROBI_WLS: ${{ secrets.GUROBI_WLS }} COPT_CLIENT_INI: ${{ secrets.COPT_CLIENT_INI }} MOSEK_LICENSE: ${{ secrets.MOSEK_LICENSE }} + KNITRO_LICENSE: ${{ secrets.KNITRO_LICENSE }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CHECK_LICENSE: false ARCH: ${{ runner.arch }} diff --git a/.github/workflows/wheel.yml b/.github/workflows/wheel.yml index ef90f62c..a8e9ab5b 100644 --- a/.github/workflows/wheel.yml +++ b/.github/workflows/wheel.yml @@ -12,7 +12,7 @@ on: - pypi - none default: none - + jobs: build_wheels: @@ -102,4 +102,4 @@ jobs: - name: Publish distribution 📦 to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: - repository-url: https://upload.pypi.org/legacy/ \ No newline at end of file + repository-url: https://upload.pypi.org/legacy/ diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 76a21ad7..3ef48894 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -1,10 +1,10 @@ name: windows-build on: - pull_request: - push: - branches: - - master + pull_request: + push: + branches: + - master jobs: @@ -35,6 +35,7 @@ jobs: GUROBI_WLS: ${{ secrets.GUROBI_WLS }} COPT_CLIENT_INI: ${{ secrets.COPT_CLIENT_INI }} MOSEK_LICENSE: ${{ secrets.MOSEK_LICENSE }} + KNITRO_LICENSE: ${{ secrets.KNITRO_LICENSE }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CHECK_LICENSE: true diff --git a/optimizer_version.toml b/optimizer_version.toml index 1b4790da..26fa9312 100644 --- a/optimizer_version.toml +++ b/optimizer_version.toml @@ -4,3 +4,4 @@ MOSEK = "10.2.0" HiGHS = "1.12.0" IPOPT = "3.13.2" Xpress = "9.8" +KNITRO = "15.1.0"