Skip to content

Commit 39e3549

Browse files
authored
Refactor solver-tests.yml to simplify secret management (#2709)
1 parent a020b50 commit 39e3549

File tree

1 file changed

+69
-79
lines changed

1 file changed

+69
-79
lines changed

.github/workflows/solver-tests.yml

Lines changed: 69 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,28 @@ jobs:
1111
runs-on: ubuntu-latest
1212
env:
1313
PACKAGE: ${{ matrix.package }}
14-
XPRESS_JL_SKIP_LIB_CHECK: "true"
15-
# It's okay to share this secret with other packages because it is the public
16-
# community-xpauth.xpr and not something confidential to JuMP-dev.
17-
XPAUTH_XPR: ${{ secrets.XPAUTH_XPR }}
1814
strategy:
1915
fail-fast: false
2016
matrix:
2117
include:
2218
- package: 'JuMP'
2319
- package: 'Convex'
2420
- package: 'AmplNLWriter'
25-
# - package: 'BARON' # Requires license
21+
- package: 'BARON'
2622
- package: 'Cbc'
2723
- package: 'Clp'
28-
# - package: 'CPLEX' # See below
24+
- package: 'CPLEX'
2925
- package: 'CSDP'
3026
- package: 'DiffOpt'
3127
- package: 'DSDP'
3228
- package: 'Dualization'
3329
- package: 'ECOS'
3430
- package: 'GLPK'
35-
# - package: 'Gurobi' # See below
31+
- package: 'Gurobi'
3632
- package: 'HiGHS'
3733
- package: 'Hypatia'
3834
- package: 'Ipopt'
39-
# - package: 'KNITRO' # See below
35+
- package: 'KNITRO'
4036
- package: 'MiniZinc'
4137
- package: 'MosekTools'
4238
- package: 'MultiObjectiveAlgorithms'
@@ -49,7 +45,7 @@ jobs:
4945
- package: 'PolyJuMP'
5046
- package: 'SCS'
5147
- package: 'SDPA'
52-
# - package: 'SDPLR' # Requires MATLAB
48+
- package: 'SDPLR'
5349
# - package: 'SDPNAL' # Requires MATLAB
5450
# - package: 'SDPT3' # Requires MATLAB
5551
# - package: 'SeduMi' # Requires MATLAB
@@ -96,84 +92,78 @@ jobs:
9692
version: '1'
9793
- uses: julia-actions/cache@v2
9894
- uses: julia-actions/julia-buildpkg@v1
99-
- name: Test
100-
shell: julia --color=yes {0}
95+
# Setup BARON.jl
96+
- name: Add BARON secrets
97+
if: ${{ matrix.package == 'BARON' }}
98+
shell: bash
99+
# Writing a multiline string is hard. GitHub says:
100+
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions#multiline-strings
101+
#
102+
# For multiline strings, you may use a delimiter with the following syntax.
103+
#
104+
# {name}<<{delimiter}
105+
# {value}
106+
# {delimiter}
107+
#
108+
# Their example goes on to use 'EOF' as the delimiter, which works so
109+
# long as 'EOF' does not appear in the string. If you get the error:
110+
#
111+
# Run echo "SECRET_BARON_LICENSE='***
112+
# Error: Unable to process file command 'env' successfully.
113+
# Error: Invalid format '***'
114+
#
115+
# This is the most likely culprit.
101116
run: |
102-
import Pkg
103-
Pkg.develop(Pkg.PackageSpec(; path = pwd()))
104-
if ENV["PACKAGE"] == "Xpress"
105-
write("/opt/xpauth.xpr", ENV["XPAUTH_XPR"])
106-
ENV["XPAUTH_PATH"] = "/opt/xpauth.xpr"
107-
ENV["XPRESS_JL_SKIP_LIB_CHECK"] = true
108-
end
109-
Pkg.develop(ENV["PACKAGE"])
110-
Pkg.build(ENV["PACKAGE"])
111-
Pkg.test(ENV["PACKAGE"])
112-
test-cplex:
113-
name: CPLEX
114-
runs-on: ubuntu-latest
115-
steps:
116-
- uses: actions/checkout@v4
117-
- uses: julia-actions/setup-julia@v2
118-
with:
119-
version: '1'
120-
- uses: julia-actions/cache@v2
121-
- uses: julia-actions/julia-buildpkg@v1
122-
- name: Test
123-
shell: julia --color=yes {0}
124-
env:
125-
CPLEX_VERSION: '2210'
126-
SECRET_CPLEX_URL_2210: ${{ secrets.SECRET_CPLEX_URL_2210 }}
117+
{
118+
echo "SECRET_BARON_LICENSE<<EOF"
119+
echo "${{ secrets.BARON_LICENSE }}"
120+
echo "EOF"
121+
} >> $GITHUB_ENV
122+
# Setup CPLEX.jl
123+
- name: Add CPLEX secrets
124+
if: ${{ matrix.package == 'CPLEX' }}
125+
env:
126+
SECRET_CPLEX_URL_2210: ${{ secrets.CPLEX_URL_2210 }}
127+
shell: bash
127128
run: |
128-
import Pkg
129-
Pkg.develop(Pkg.PackageSpec(; path = pwd()))
130-
Pkg.develop("CPLEX")
131-
Pkg.test("CPLEX")
132-
test-gurobi:
133-
name: Gurobi
134-
runs-on: ubuntu-latest
135-
steps:
136-
- uses: actions/checkout@v4
137-
- uses: julia-actions/setup-julia@v2
138-
with:
139-
version: '1'
140-
- uses: julia-actions/cache@v2
141-
- shell: bash
142-
env:
143-
WLSLICENSE: ${{ secrets.WLSLICENSE }}
129+
echo "SECRET_CPLEX_URL_2210=${SECRET_CPLEX_URL_2210}" >> $GITHUB_ENV
130+
echo "CPLEX_VERSION=2210" >> $GITHUB_ENV
131+
# Setup Gurobi.jl
132+
- name: Add Gurobi secrets
133+
if: ${{ matrix.package == 'Gurobi' }}
134+
env:
135+
SECRET_GUROBI_LICENSE: ${{ secrets.GUROBI_LICENSE }}
136+
shell: bash
144137
run: |
145138
mkdir -p /opt/gurobi
146-
echo "$WLSLICENSE" > /opt/gurobi/gurobi.lic
147-
- uses: julia-actions/julia-buildpkg@v1
148-
- name: Test
149-
shell: julia --color=yes {0}
139+
echo "${SECRET_GUROBI_LICENSE}" > /opt/gurobi/gurobi.lic
140+
# Setup KNITRO.jl
141+
- name: Add KNITRO secrets
142+
if: ${{ matrix.package == 'KNITRO' }}
143+
env:
144+
SECRET_KNITRO_LICENSE: ${{ secrets.KNITRO_LICENSE }}
145+
SECRET_KNITRO_URL: ${{ secrets.KNITRO_URL }}
146+
SECRET_KNITRO_LIBIOMP5: ${{ secrets.KNITRO_LIBIOMP5 }}
147+
shell: bash
150148
run: |
151-
import Pkg
152-
Pkg.develop(Pkg.PackageSpec(; path = pwd()))
153-
Pkg.develop("Gurobi")
154-
Pkg.test("Gurobi")
155-
test-knitro:
156-
name: KNITRO
157-
runs-on: ubuntu-latest
158-
steps:
159-
- uses: actions/checkout@v4
160-
- uses: julia-actions/setup-julia@v2
161-
with:
162-
version: '1'
163-
- uses: julia-actions/cache@v2
164-
- shell: bash
149+
echo "${SECRET_KNITRO_LICENSE}" > ~/artelys_lic.txt
150+
echo "SECRET_KNITRO_URL=${SECRET_KNITRO_URL}" >> $GITHUB_ENV
151+
echo "SECRET_KNITRO_LIBIOMP5=${SECRET_KNITRO_LIBIOMP5}" >> $GITHUB_ENV
152+
# Setup Xpress.jl
153+
- name: Add Xpress secrets
154+
if: ${{ matrix.package == 'Xpress' }}
165155
env:
166-
ARTELYS_LIC_JUMP_DEV: ${{ secrets.ARTELYS_LIC_8326_JUMP_DEV_2023_11_02 }}
156+
SECRET_XPRESS_LICENSE: ${{ secrets.XPRESS_LICENSE }}
157+
shell: bash
167158
run: |
168-
echo "$ARTELYS_LIC_JUMP_DEV" > ~/artelys_lic.txt
169-
- name: Test
159+
echo "${SECRET_XPRESS_LICENSE}" > /opt/xpauth.xpr
160+
echo "XPRESS_JL_SKIP_LIB_CHECK=true" >> $GITHUB_ENV
161+
echo "XPAUTH_PATH=/opt/xpauth.xpr" >> $GITHUB_ENV
162+
- name: Run tests
170163
shell: julia --color=yes {0}
171-
env:
172-
SECRET_KNITRO_URL: ${{ secrets.SECRET_KNITRO_URL }}
173-
SECRET_KNITRO_LIBIOMP5: ${{ secrets.SECRET_KNITRO_LIBIOMP5 }}
174164
run: |
175165
import Pkg
176166
Pkg.develop(Pkg.PackageSpec(; path = pwd()))
177-
Pkg.develop("KNITRO")
178-
Pkg.build("KNITRO")
179-
Pkg.test("KNITRO")
167+
Pkg.develop(ENV["PACKAGE"])
168+
Pkg.build(ENV["PACKAGE"])
169+
Pkg.test(ENV["PACKAGE"])

0 commit comments

Comments
 (0)