-
-
Notifications
You must be signed in to change notification settings - Fork 335
368 lines (363 loc) · 17.4 KB
/
run_unix.yml
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
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
name: Run Unix
on: [push, pull_request]
jobs:
RunUnix:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
max-parallel: 4
matrix:
os: [ubuntu-20.04, macos-11.0]
steps:
# compile and prepare env
- name: Clone Repository
uses: actions/checkout@v2
- name: Set Version
id: version
run: if [ $GITHUB_REF_TYPE == "tag" ]; then echo "::set-output name=version::$GITHUB_REF_NAME"; else echo "::set-output name=version::$GITHUB_SHA"; fi
- name: Check Version
run: echo ${{ steps.version.outputs.version }}
- name: Install Python 3.7
uses: actions/setup-python@v3
with:
python-version: '3.7.7'
architecture: 'x64'
- name: Install Python Dependencies
if: (matrix.os == 'ubuntu-20.04')
run: |
sudo -H apt-get update -y
sudo -H apt-get install -y python3-setuptools python3-pygments libbluetooth-dev
env:
DEBIAN_FRONTEND: noninteractive
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install Typescript
run: |
npm install -g ts-node
- name: Install Ninja
if: (matrix.os == 'macos-11.0')
uses: seanmiddleditch/gha-setup-ninja@master
with:
version: 1.10.2
- name: Install Julia
uses: julia-actions/setup-julia@v1
with:
version: 1.3.1
- name: Setup Cmake
uses: jwlawson/[email protected]
with:
cmake-version: '3.21.x'
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11.0.3
# build simpleble outside from brainflow because of different deployment targets
- name: Compile SimpleBLE MacOS
if: (matrix.os == 'macos-11.0')
run: |
mkdir $GITHUB_WORKSPACE/third_party/SimpleBLE/simpleble/build
cd $GITHUB_WORKSPACE/third_party/SimpleBLE/simpleble/build
cmake -G Ninja -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/installed -DCMAKE_BUILD_TYPE=Release ..
ninja
ninja install
- name: Compile BrainFlow MacOS
if: (matrix.os == 'macos-11.0')
run: |
mkdir $GITHUB_WORKSPACE/build
cd $GITHUB_WORKSPACE/build
cmake -G Ninja -DBRAINFLOW_VERSION=$BRAINFLOW_VERSION -DBUILD_ONNX=ON -DBUILD_BLUETOOTH=ON -DBUILD_TESTS=ON -DWARNINGS_AS_ERRORS=ON -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/installed -DCMAKE_BUILD_TYPE=Release ..
ninja
ninja install
env:
BRAINFLOW_VERSION: ${{ steps.version.outputs.version }}
- name: Compile BrainFlow Ubuntu
if: (matrix.os == 'ubuntu-20.04')
run: |
mkdir $GITHUB_WORKSPACE/build
cd $GITHUB_WORKSPACE/build
cmake -DBRAINFLOW_VERSION=$BRAINFLOW_VERSION -DBUILD_BLUETOOTH=ON -DBUILD_ONNX=ON -DBUILD_TESTS=ON -DWARNINGS_AS_ERRORS=ON -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/installed -DCMAKE_BUILD_TYPE=Release ..
make
make install
env:
BRAINFLOW_VERSION: ${{ steps.version.outputs.version }}
- name: Compile BrainFlow in ManyLinux
# bindings in production have to use libraries compiled inside this image!
if: (matrix.os == 'ubuntu-20.04')
run: |
docker pull dockcross/manylinux2014-x64:20210708-94745ff
docker run -e BRAINFLOW_VERSION=$BRAINFLOW_VERSION -e GITHUB_WORKSPACE=$GITHUB_WORKSPACE -v $GITHUB_WORKSPACE:$GITHUB_WORKSPACE dockcross/manylinux2014-x64:20210708-94745ff /bin/bash -c "yum install -y bluez-libs-devel dbus-devel && /opt/python/cp36-cp36m/bin/pip3.6 install cmake==3.21.4 && cd $GITHUB_WORKSPACE && mkdir build_docker && cd build_docker && /opt/_internal/cpython-3.6.14/bin/cmake -DBRAINFLOW_VERSION=$BRAINFLOW_VERSION -DBUILD_ONNX=ON -DBUILD_BLE=ON -DBUILD_BLUETOOTH=ON -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/installed_docker -DCMAKE_BUILD_TYPE=Release .. && make && make install"
env:
BRAINFLOW_VERSION: ${{ steps.version.outputs.version }}
- name: Setup Python Package
run: |
cd $GITHUB_WORKSPACE/python_package
sudo -H python3 -m pip install -U .
- name: Build Node Package
run: |
cd $GITHUB_WORKSPACE/nodejs_package/brainflow
npm install
npm run build
- name: Install Node Tests
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm install
- name: Setup Java package
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn package
cp -av $GITHUB_WORKSPACE/java_package/brainflow/target/classes/brainflow/. $GITHUB_WORKSPACE/java_package/brainflow/target/classes/
cp -av $GITHUB_WORKSPACE/java_package/brainflow/target/classes/brainflow/. $GITHUB_WORKSPACE/java_package/brainflow/target/classes/
- name: Build Get Data Test
run: |
cd $GITHUB_WORKSPACE/cpp_package/examples/get_data
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/installed ..
make
- name: Build Signal Processing Test
run: |
cd $GITHUB_WORKSPACE/cpp_package/examples/signal_processing
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/installed ..
make
- name: Build ML Demo Test
run: |
cd $GITHUB_WORKSPACE/cpp_package/examples/ml
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/installed ..
make
- name: Install Emulator
run: |
cd $GITHUB_WORKSPACE/emulator
sudo -H python3 -m pip install -U .
- name: Install Python test Dependencies
run: sudo -H python3 -m pip install -r $GITHUB_WORKSPACE/python_package/examples/tests/requirements.txt
# start testing
- name: Run unit tests
run: $GITHUB_WORKSPACE/build/tests/brainflow_tests
- name: Run All Julia Tests
run: |
export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/installed/lib:$LD_LIBRARY_PATH
julia --project=$GITHUB_WORKSPACE/julia_package/brainflow -e "import Pkg; Pkg.test()"
- name: Cyton Python
run: sudo -H python3 ./emulator/brainflow_emulator/cyton_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id 0 --serial-port
- name: Cyton Python Commands
run: sudo -H python3 ./emulator/brainflow_emulator/cyton_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/cyton_commands.py --serial-port
- name: Cyton Python Markers
run: sudo -H python3 ./emulator/brainflow_emulator/cyton_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/markers.py --board-id 0 --serial-port
- name: Multiboard Python
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/cyton_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_multiboard_get_data.py --board-id 0 --serial-port
- name: Cyton Cpp
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/cyton_linux.py $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/brainflow_get_data --board-id 0 --serial-port
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Synthetic Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id -1
- name: Synthetic Python Multiple Buffers
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/multiple_buffers.py
- name: Synthetic Python Multiple Streamers
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/multiple_streamers.py
- name: Playback Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/playback_test.py
- name: Synthetic Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/brainflow_get_data --board-id -1
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Synthetic Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.BrainFlowGetData" -Dexec.args="--board-id -1"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Synthetic Java Markers
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.Markers" -Dexec.args="--board-id -1"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Cyton Daisy Python
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/cyton_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id 2 --serial-port
- name: Cyton Daisy Python Markers
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/cyton_linux.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/markers.py --board-id 2 --serial-port
- name: Galea Cpp
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/galea_udp.py $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/brainflow_get_data --board-id 3 --ip-address 127.0.0.1
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Galea Cpp Markers
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/galea_udp.py $GITHUB_WORKSPACE/cpp_package/examples/get_data/build/markers --board-id 3 --ip-address 127.0.0.1
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Streaming Python
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/streaming_board_emulator.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_get_data.py --board-id -2 --ip-address 225.1.1.1 --ip-port 6677 --master-board -1
- name: Streaming Python Markers
run: sudo -H python3 $GITHUB_WORKSPACE/emulator/brainflow_emulator/streaming_board_emulator.py python3 $GITHUB_WORKSPACE/python_package/examples/tests/markers.py --board-id -2 --ip-address 225.1.1.1 --ip-port 6677 --master-board -1
- name: Denoising Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/denoising.py
- name: Serialization Python
run: |
cd $GITHUB_WORKSPACE
sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/serialization.py
- name: Python Release All
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/release_all.py
- name: Filters Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/signal_filtering.py
- name: Transforms Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/transforms.py
- name: Downsampling Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/downsampling.py
- name: ICA Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/ica.py
- name: CSP Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/csp.py
- name: Windowing Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/windowing.py
- name: MNE Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/brainflow_to_mne.py
- name: BandPower Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/band_power.py
- name: BandPowerAll Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/band_power_all.py
- name: Denoising Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/denoising
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Downsampling Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/downsampling
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: CSP Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/csp
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Windowing Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/windowing
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Filters Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/signal_filtering
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Serialization Cpp
run: |
cd $GITHUB_WORKSPACE
sudo -H $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/serialization
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Transforms Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/transforms
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: BandPower Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/signal_processing/build/band_power
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Denoising Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.Denoising"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: ICA Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.ICA"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Downsampling Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.Downsampling"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: CSP Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.CSP"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Windowing Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.Windowing"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Transforms Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.Transforms"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: BandPower Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.BandPower"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: EEG Metrics Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/eeg_metrics.py --board-id -1
- name: EEG Metrics Custom Python
run: sudo -H python3 $GITHUB_WORKSPACE/python_package/examples/tests/eeg_metrics_ci.py --board-id -1 --classifier 2 --metric 2 --model-file $GITHUB_WORKSPACE/src/ml/train/logreg_mindfulness.onnx
- name: EEG Metrics Cpp
run: $GITHUB_WORKSPACE/cpp_package/examples/ml/build/eeg_metrics --board-id -1
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: EEG Metrics Cpp Dyn Lib
if: (matrix.os == 'ubuntu-20.04')
run: $GITHUB_WORKSPACE/cpp_package/examples/ml/build/eeg_metrics_ci --board-id -1 --metric 2 --classifier 1 --model-file $GITHUB_WORKSPACE/cpp_package/examples/ml/build/libdyn_lib_test.so
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: EEG Metrics Java
run: |
cd $GITHUB_WORKSPACE/java_package/brainflow
mvn exec:java -Dexec.mainClass="brainflow.examples.EEGMetrics" -Dexec.args="--board-id -1"
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/installed/lib
- name: Synthetic Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run brainflow_get_data
- name: Signal Filters Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run signal_filtering
- name: Serialization Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run serialization
- name: Downsampling Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run downsampling
- name: Denoising Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run denoising
- name: EEG Metrics Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run eeg_metrics
- name: BandPowerAll Node
run: |
cd $GITHUB_WORKSPACE/nodejs_package/tests
npm run bandpower_all
# deploy started
- name: Install AWS CLI
run: sudo -H python3 -m pip install awscli==1.21.10
- name: Push Libraries Linux Docker
if: ${{ github.event_name == 'push' && matrix.os == 'ubuntu-20.04' && github.repository == 'brainflow-dev/brainflow' }}
run: |
aws s3 cp $GITHUB_WORKSPACE/installed_docker/lib/ s3://brainflow/$GITHUB_SHA/linux --recursive
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: Push Libraries MacOS Dev
if: ${{ github.event_name == 'push' && matrix.os == 'macos-11.0' && github.repository == 'brainflow-dev/brainflow' }}
run: |
aws s3 cp $GITHUB_WORKSPACE/installed/lib/ s3://brainflow/$GITHUB_SHA/macos_release --recursive
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}