forked from libprima/prima
-
Notifications
You must be signed in to change notification settings - Fork 0
130 lines (114 loc) · 4.88 KB
/
verify_archiva.yml
File metadata and controls
130 lines (114 loc) · 4.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Verification, archiva
on:
# Trigger the workflow on push or pull request
#push:
#pull_request: # DANGEROUS! MUST be disabled for self-hosted runners!
# Trigger the workflow by cron. The default time zone of GitHub Actions is UTC.
schedule:
# - cron: '0 1,9,17 * * *'
- cron: '0 22 * * *'
# Trigger the workflow manually
workflow_dispatch:
inputs:
git-ref:
description: Git Ref (Optional)
required: false
random-seed:
description: Random Seed (Optional)
required: false
# Show the git ref in the workflow name if it is invoked manually.
run-name: ${{ github.event_name == 'workflow_dispatch' && format('Manual run {0} , seed {1}', inputs.git-ref, inputs.random-seed) || '' }}
jobs:
test:
name: Verify PRIMA.
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
# Do NOT use MATLAB R2025a/b due to its bug.
# See https://www.mathworks.com/matlabcentral/answers/2178414-bug-matlab-2025a-segfaults-on-ubuntu-when-handling-fortran-mex-files-with-internal-subroutines
matlab: [R2024b]
solver: [newuoa, cobyla, lincoa, bobyqa, uobyqa]
dim: [small, big, large]
version: [220208, 220227, 220513, 220531,220601,220616,220819,220926,221105,221128,230108,230305,230430,230509,230614,230804]
exclude:
- solver: lincoa
dim: large # very few problems but takes too much time to run
- solver: newuoa
dim: large # very few problems but takes too much time to run
steps:
- name: Run `sudo apt update`
run: sudo apt update || true # Otherwise, free-disk-space or other actions relying on `apt` may fail
- name: Free disk space
uses: jlumbroso/free-disk-space@main
with:
# all of these default to true, but feel free to set to "false" if necessary for your workflow
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: false # Important, or the runner may be shut down due to memory starvation.
- name: Clone Repository (Latest)
uses: actions/checkout@v6.0.2
if: github.event.inputs.git-ref == ''
with:
ssh-key: ${{ secrets.SSH_PRIVATE_KEY_ACT }} # This forces checkout to use SSH, not HTTPS
submodules: recursive
- name: Clone Repository (Custom Ref)
uses: actions/checkout@v6.0.2
if: github.event.inputs.git-ref != ''
with:
ref: ${{ github.event.inputs.git-ref }}
ssh-key: ${{ secrets.SSH_PRIVATE_KEY_ACT }} # This forces checkout to use SSH, not HTTPS
submodules: recursive
- name: Miscellaneous setup
run: bash .github/scripts/misc_setup
- name: Clone MatCUTEst
uses: actions/checkout@v6.0.2
with:
ssh-key: ${{ secrets.SSH_PRIVATE_KEY_ACT }} # This forces checkout to use SSH, not HTTPS
repository: matcutest/matcutest_compiled
path: matcutest
- name: Set up gfortran on Linux
if: startsWith(matrix.os, 'ubuntu')
uses: fortran-lang/setup-fortran@main
with:
compiler: gcc
version: latest
- name: Check gfortran version on Linux
if: startsWith(matrix.os, 'ubuntu')
run: which gcc && gcc --version && which gfortran && gfortran --version
- name: Set up MATLAB
uses: matlab-actions/setup-matlab@v2.6.1
with:
release: ${{ matrix.matlab }}
cache: true
products: Parallel_Computing_Toolbox
- name: Conduct the test
uses: equipez/run-matlab-command@v2
with:
timelimit: 320m
command: |
ver;
root_dir = pwd();
cd(fullfile(root_dir, 'matcutest')); install(); which macup
cd(fullfile(root_dir, '.development/archiva/${{ matrix.version }}/matlab/tests'));
tz = 'Asia/Shanghai';
dt = datetime('now', 'TimeZone', tz);
DayMonth = day(dt);
options = struct();
options.verbose = true;
if ~isempty('${{ inputs.random-seed }}')
options.seed = str2num('${{ inputs.random-seed }}');
else
options.seed = 100*mod(year(dt), 100) + week(dt);
end
options.nr = 1; % Since the code will not change along the time, big nr is not needed.
options.no_classical = true; % Starting from 20230212, we do not verify the classical version for the archiva.
options
verify('${{ matrix.solver }}', '${{ matrix.dim }}', 'seq', options); % Zaikun 20230328: Conduct the verification sequentially to avoid the debugging pain.
delete([upper('${{ matrix.solver }}'), '_output.txt']);
delete('fort.6');
cd(root_dir); setup clean; setup uninstall;