-
Notifications
You must be signed in to change notification settings - Fork 2
303 lines (293 loc) · 12.9 KB
/
Copy pathci.yml
File metadata and controls
303 lines (293 loc) · 12.9 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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
name: Gambit Ubuntu CI
on: workflow_dispatch
# push:
# branches: [ master, ci-* ]
# pull_request:
# branches: [ master ]
# schedule:
# - cron: '0 5 * * *'
jobs:
# A job that builds GAMBIT + scanners, tests the command-line interface
# and runs a minimal test run with spartan.yaml
gambit_build:
runs-on: [docker, self-hosted]
strategy:
fail-fast: false
matrix:
arch: [ubuntu] #, ubuntu-py2, fedora
#mpi: [ON, OFF]
container: gambitbsm/gambit-base:${{ matrix.arch }}
defaults:
run:
shell: bash -eo pipefail {0}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up build environment
run: |
mkdir -p BUILD
cd BUILD
echo "Sourcing setup.sh"
cat /etc/profile.d/gambit-setup.sh
source /etc/profile.d/gambit-setup.sh
echo "Making buildenv.sh"
> buildenv.sh
echo "source /etc/profile.d/gambit-setup.sh" >> buildenv.sh
echo "export CMAKE_BUILD_TYPE=None" >> buildenv.sh
echo "export CMAKE_C_COMPILER=$(which gcc)" >> buildenv.sh
echo "export CMAKE_CXX_COMPILER=$(which g++)" >> buildenv.sh
echo "export CMAKE_Fortran_COMPILER=$(which gfortran)" >> buildenv.sh
PYTHON_LIBRARY=$(python -c 'from __future__ import print_function; from distutils.sysconfig import get_config_var; print("%s/%s" % (get_config_var("LIBDIR"), get_config_var("INSTSONAME")))')
PYTHON_INCLUDE_DIR=$(python -c 'from __future__ import print_function; from distutils import sysconfig; print(sysconfig.get_config_var("INCLUDEPY"))')
echo "export PYTHON_EXECUTABLE=$(which python)" >> buildenv.sh
echo "export PYTHON_LIBRARY=$PYTHON_LIBRARY" >> buildenv.sh
echo "export PYTHON_INCLUDE_DIR=$PYTHON_INCLUDE_DIR" >> buildenv.sh
echo "export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH" >> buildenv.sh
cat buildenv.sh
pip install --upgrade pyyaml pybind11 h5py scipy numpy pyhf configobj pandas matplotlib setuptools==58.2.0
- name: Configure with cmake
run: |
cd BUILD/ && . buildenv.sh
cmake .. -D CMAKE_CXX_FLAGS="-rdynamic" -D WITH_ROOT=OFF -D WITH_RESTFRAMES=OFF -D WITH_HEPMC=ON -D WITH_YODA=ON -D BUILD_FS_MODELS="CMSSM;MSSM;MDM" -D WITH_MPI=OFF
- name: Build scanners
run: |
cd BUILD/ && . buildenv.sh
make -j$(( ($(nproc)+1)/2 )) scanners
cmake ..
- name: Build Gambit
run: |
cd BUILD && . buildenv.sh
# Now build Gambit
make -j$(( ($(nproc)+1)/2 )) gambit
- name: CLI test
run: |
. BUILD/buildenv.sh
./gambit -h
- name: Run spartan.yaml
run: |
. BUILD/buildenv.sh
./gambit -rf yaml_files/spartan.yaml
# A job that tests the builds for all backends in the "make backends" target.
# Backends that are anyway tested as part of the "test_runs" job can be skipped,
# see the build_backends.sh command below.
backends_build:
if: ${{ !cancelled() }}
needs: [gambit_build] # Sets run order
runs-on: [docker, self-hosted]
strategy:
fail-fast: false
matrix:
arch: [ubuntu] #, ubuntu-py2, fedora
#mpi: [ON, OFF]
container: gambitbsm/gambit-base:${{ matrix.arch }}
defaults:
run:
shell: bash -eo pipefail {0}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up build environment
run: |
mkdir -p BUILD
cd BUILD
echo "Sourcing setup.sh"
cat /etc/profile.d/gambit-setup.sh
source /etc/profile.d/gambit-setup.sh
echo "Making buildenv.sh"
> buildenv.sh
echo "source /etc/profile.d/gambit-setup.sh" >> buildenv.sh
echo "export CMAKE_BUILD_TYPE=None" >> buildenv.sh
echo "export CMAKE_C_COMPILER=$(which gcc)" >> buildenv.sh
echo "export CMAKE_CXX_COMPILER=$(which g++)" >> buildenv.sh
echo "export CMAKE_Fortran_COMPILER=$(which gfortran)" >> buildenv.sh
PYTHON_LIBRARY=$(python -c 'from __future__ import print_function; from distutils.sysconfig import get_config_var; print("%s/%s" % (get_config_var("LIBDIR"), get_config_var("INSTSONAME")))')
PYTHON_INCLUDE_DIR=$(python -c 'from __future__ import print_function; from distutils import sysconfig; print(sysconfig.get_config_var("INCLUDEPY"))')
echo "export PYTHON_EXECUTABLE=$(which python)" >> buildenv.sh
echo "export PYTHON_LIBRARY=$PYTHON_LIBRARY" >> buildenv.sh
echo "export PYTHON_INCLUDE_DIR=$PYTHON_INCLUDE_DIR" >> buildenv.sh
echo "export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH" >> buildenv.sh
cat buildenv.sh
pip install --upgrade pyyaml pybind11 h5py scipy numpy pyhf configobj pandas matplotlib setuptools==58.2.0
- name: Configure with cmake
run: |
cd BUILD/ && . buildenv.sh
cmake .. -D CMAKE_CXX_FLAGS="-rdynamic" -D WITH_ROOT=OFF -D WITH_RESTFRAMES=OFF -D WITH_HEPMC=ON -D WITH_YODA=ON -D BUILD_FS_MODELS="CMSSM;MSSM;MDM" -D WITH_MPI=OFF
- name: Build backends
run: |
cd BUILD && . buildenv.sh
# Build backends, except those that are tested via other jobs.
# This replaces the "make backends" command.
../cmake/scripts/build_backends.sh -f default_backends.txt -j 1 -s "nulike susyhit rivet contur pythia higgsbounds higgssignals ATLAS_FullLikes superiso heplikedata heplike"
# A job for GAMBIT test runs. Only those GAMBIT modules, scanners and backends
# required by the test runs are built.
test_runs:
if: ${{ !cancelled() }}
needs: [gambit_build, backends_build] # Sets run order
runs-on: [docker, self-hosted]
strategy:
fail-fast: false
matrix:
arch: [ubuntu] #, ubuntu-py2, fedora
#mpi: [ON, OFF]
container: gambitbsm/gambit-base:${{ matrix.arch }}
defaults:
run:
shell: bash -eo pipefail {0}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up build environment
run: |
mkdir -p BUILD
cd BUILD
echo "Sourcing setup.sh"
cat /etc/profile.d/gambit-setup.sh
source /etc/profile.d/gambit-setup.sh
echo "Making buildenv.sh"
> buildenv.sh
echo "source /etc/profile.d/gambit-setup.sh" >> buildenv.sh
echo "export CMAKE_BUILD_TYPE=None" >> buildenv.sh
echo "export CMAKE_C_COMPILER=$(which gcc)" >> buildenv.sh
echo "export CMAKE_CXX_COMPILER=$(which g++)" >> buildenv.sh
echo "export CMAKE_Fortran_COMPILER=$(which gfortran)" >> buildenv.sh
PYTHON_LIBRARY=$(python -c 'from __future__ import print_function; from distutils.sysconfig import get_config_var; print("%s/%s" % (get_config_var("LIBDIR"), get_config_var("INSTSONAME")))')
PYTHON_INCLUDE_DIR=$(python -c 'from __future__ import print_function; from distutils import sysconfig; print(sysconfig.get_config_var("INCLUDEPY"))')
echo "export PYTHON_EXECUTABLE=$(which python)" >> buildenv.sh
echo "export PYTHON_LIBRARY=$PYTHON_LIBRARY" >> buildenv.sh
echo "export PYTHON_INCLUDE_DIR=$PYTHON_INCLUDE_DIR" >> buildenv.sh
echo "export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH" >> buildenv.sh
cat buildenv.sh
pip install --upgrade pyyaml pybind11 h5py scipy numpy pyhf configobj pandas matplotlib setuptools==58.2.0
- name: Configure with cmake
run: |
cd BUILD/ && . buildenv.sh
cmake .. -D CMAKE_CXX_FLAGS="-rdynamic" -D WITH_ROOT=OFF -D WITH_RESTFRAMES=OFF -D WITH_HEPMC=ON -D WITH_YODA=ON -D BUILD_FS_MODELS="CMSSM" -D WITH_MPI=OFF -Ditch="DarkBit;CosmoBit;NeutrinoBit;ObjectivesBit"
- name: Build required scanners
run: |
cd BUILD/ && . buildenv.sh
make -j$(( ($(nproc)+1)/2 )) diver
cmake ..
- name: Build required backends
run: |
cd BUILD/ && . buildenv.sh
# Build bakends needed for ColliderBit_CMSSM.yaml
make -j$(( ($(nproc)+1)/2 )) nulike
make -j$(( ($(nproc)+1)/2 )) susyhit
make -j$(( ($(nproc)+1)/2 )) rivet
make -j$(( ($(nproc)+1)/2 )) contur
make -j$(( ($(nproc)+1)/2 )) pythia
make -j$(( ($(nproc)+1)/2 )) higgsbounds
make -j$(( ($(nproc)+1)/2 )) higgssignals
make ATLAS_FullLikes
# Build bakends needed for WC.yaml
make superiso
make -j$(( ($(nproc)+1)/2 )) heplikedata
make -j$(( ($(nproc)+1)/2 )) heplike
- name: Build Gambit
run: |
cd BUILD && . buildenv.sh
# Now build Gambit
make -j$(( ($(nproc)+1)/2 )) gambit
- name: Run ColliderBit_CMSSM.yaml
run: |
. BUILD/buildenv.sh
./gambit -rf yaml_files/ColliderBit_CMSSM.yaml
- name: Run WC.yaml
run: |
. BUILD/buildenv.sh
./gambit -rf yaml_files/WC.yaml
# A job that builds all the standalones
standalones_build:
if: ${{ !cancelled() }}
needs: [gambit_build, backends_build, test_runs] # Sets run order
runs-on: [docker, self-hosted]
strategy:
fail-fast: false
matrix:
arch: [ubuntu] #, ubuntu-py2, fedora
#mpi: [ON, OFF]
container: gambitbsm/gambit-base:${{ matrix.arch }}
defaults:
run:
shell: bash -eo pipefail {0}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up build environment
run: |
mkdir -p BUILD
cd BUILD
echo "Sourcing setup.sh"
cat /etc/profile.d/gambit-setup.sh
source /etc/profile.d/gambit-setup.sh
echo "Making buildenv.sh"
> buildenv.sh
echo "source /etc/profile.d/gambit-setup.sh" >> buildenv.sh
echo "export CMAKE_BUILD_TYPE=None" >> buildenv.sh
echo "export CMAKE_C_COMPILER=$(which gcc)" >> buildenv.sh
echo "export CMAKE_CXX_COMPILER=$(which g++)" >> buildenv.sh
echo "export CMAKE_Fortran_COMPILER=$(which gfortran)" >> buildenv.sh
PYTHON_LIBRARY=$(python -c 'from __future__ import print_function; from distutils.sysconfig import get_config_var; print("%s/%s" % (get_config_var("LIBDIR"), get_config_var("INSTSONAME")))')
PYTHON_INCLUDE_DIR=$(python -c 'from __future__ import print_function; from distutils import sysconfig; print(sysconfig.get_config_var("INCLUDEPY"))')
echo "export PYTHON_EXECUTABLE=$(which python)" >> buildenv.sh
echo "export PYTHON_LIBRARY=$PYTHON_LIBRARY" >> buildenv.sh
echo "export PYTHON_INCLUDE_DIR=$PYTHON_INCLUDE_DIR" >> buildenv.sh
echo "export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH" >> buildenv.sh
cat buildenv.sh
pip install --upgrade pyyaml pybind11 h5py scipy numpy pyhf configobj pandas matplotlib setuptools==58.2.0
- name: Configure with cmake
run: |
cd BUILD/ && . buildenv.sh
cmake .. -D CMAKE_CXX_FLAGS="-rdynamic" -D WITH_ROOT=OFF -D WITH_RESTFRAMES=OFF -D WITH_HEPMC=ON -D WITH_YODA=ON -D BUILD_FS_MODELS="CMSSM;MSSM;MDM" -D WITH_MPI=OFF
- name: Build standalones
run: |
cd BUILD && . buildenv.sh
make standalones
# - name: Validation dependencies
# run: |
# . BUILD/buildenv.sh
# pip install cowsay
# # Fetch my tests
# git clone https://github.com/andrewfowlie/gambit_bats
# cd gambit_bats
# cowsay "$(git log -n 5)"
# # Install BATS
# git clone https://github.com/bats-core/bats-core.git
# echo 'export PATH=$PATH:$GITHUB_WORKSPACE/gambit_bats/bats-core/bin' >> ../BUILD/buildenv.sh
# # Install numdiff
# git clone https://github.com/tjhei/numdiff
# (cd numdiff && ./configure && make)
# echo 'export PATH=$PATH:$GITHUB_WORKSPACE/gambit_bats/numdiff' >> ../BUILD/buildenv.sh
# - name: Validate with BATS
# run: |
# #cat BUILD/buildenv.sh
# . BUILD/buildenv.sh
# cowsay "Testing GAMBIT on $(date)"
# cowsay "$(git log -n 5)"
# cd gambit_bats
# ls
# #echo "Testing BATS"
# #bats -h
# #echo "Testing numdiff"
# #numdiff || true
# echo "Running BATS"
# export GAMBIT="$GITHUB_WORKSPACE"
# #(python2 `which bats` *.bats | tee $GAMBIT/bats.txt) || true
# (bats *.bats | tee $GAMBIT/bats.txt) || true
# cd ..
# # Note email addresses for failed tests
# source gambit_bats/email.bash
# export BATS_FAIL_EMAIL=$(bats_fail_email ./bats.tap)
# export GIT_FAIL_EMAIL="$(git_fail_email ./gambit_bats) $(git_fail_email ./)"
# cowsay "For BATS yaml failures, contact $BATS_FAIL_EMAIL"
# cowsay "For GAMBIT and test changes, contact $GIT_FAIL_EMAIL"
# echo
# # Run again, now with TAP output (may fail, causing the job to report correctly)
# echo "Running BATS with TAP output (to bats.tap)"
# cd gambit_bats
# bats --tap *.bats > $GAMBIT/bats.tap
# - name: Upload BATS output
# uses: actions/upload-artifact@v2
# with:
# name: bats_tests
# path: bats.t*