-
Notifications
You must be signed in to change notification settings - Fork 102
234 lines (211 loc) · 8.04 KB
/
CI-ubuntu.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
name: CI Ubuntu 18.04
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
release:
types: [ published ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
jobs:
build:
name: Build
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-20.04
container:
image: ubuntu:18.04
steps:
- name: Check free space
run: |
df -h
- uses: actions/checkout@v2
- name: Install dependencies
run: |
apt update && apt install -y sudo
mkdir -p ${{github.workspace}}/artifacts
# Get a newer version of cmake
sudo apt install -y gpg wget software-properties-common lsb-release ca-certificates
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
sudo apt-get update
sudo rm /usr/share/keyrings/kitware-archive-keyring.gpg
sudo apt-get install kitware-archive-keyring
sudo apt install -y cmake
sudo apt install -y g++ patchelf
sudo apt install -y '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
sudo apt install -y libopenslide-dev libjpeg-turbo8-dev # Needed for WSI module
sudo apt install -y pkgconf libusb-1.0-0-dev # Needed for realsense
sudo apt install -y python3 libpython3-dev python3-pip python3-setuptools
sudo pip3 install --upgrade pip
pip3 install numpy==1.19.5 pylddwrap==1.2.0 twine wheel==0.37.1
- name: Install CUDA and TensorRT
run: |
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
sudo apt-get update
sudo apt-get install -y cuda-toolkit-11-0 libcudnn8 libnvinfer-dev libnvonnxparsers-dev libnvparsers-dev
- name: Configure CMake
run: |
cmake -B build \
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}\
-DFAST_MODULE_OpenVINO=ON \
-DFAST_MODULE_Dicom=ON \
-DFAST_MODULE_WholeSlideImaging=ON \
-DFAST_MODULE_OpenIGTLink=ON \
-DFAST_MODULE_Clarius=ON \
-DFAST_MODULE_TensorFlow=ON \
-DCUDA_TOOLKIT_ROOT_DIR="/usr/local/cuda/" \
-DFAST_MODULE_TensorRT=ON \
-DFAST_MODULE_HDF5=ON \
-DFAST_MODULE_Plotting=ON \
-DFAST_MODULE_Python=ON \
-DFAST_MODULE_RealSense=ON \
-DFAST_BUILD_EXAMPLES=ON
- name: Build
run: cmake --build build --config ${{env.BUILD_TYPE}} -j 4
- name: Free some space
run: |
df -h
rm -Rf build/external/tensorflow/src/tensorflow/
rm -Rf build/external/openvino/src/openvino/
rm -Rf build/external/qt5/src/qt5/
rm -Rf build/external/clarius/src/clarius/
df -h
- name: Build Python wheel
run: |
cmake --build build --config ${{env.BUILD_TYPE}} --target python-wheel -j 4
cp build/python/dist/pyFAST-*.whl build/
- name: Free some space
run: |
df -h
rm -Rf build/python/
df -h
- name: Package
run: |
cmake --build build --config ${{env.BUILD_TYPE}} --target package -j 4
- name: Upload Debian package
uses: actions/upload-artifact@v3
with:
name: Debian package
path: ${{github.workspace}}/build/fast_*.deb
if-no-files-found: error
- name: Upload archive package
uses: actions/upload-artifact@v3
with:
name: Archive package (tar.xz)
path: ${{github.workspace}}/build/fast_*.tar.xz
if-no-files-found: error
- name: Upload Python wheel
uses: actions/upload-artifact@v3
with:
name: Python wheel
path: ${{github.workspace}}/build/pyFAST-*.whl
if-no-files-found: error
- name: Upload Debian package to release
if: ${{ github.event_name == 'release' }}
uses: svenstaro/[email protected]
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{github.workspace}}/build/fast_*.deb
file_glob: true
tag: ${{ github.ref }}
overwrite: true
- name: Upload archive package to release
if: ${{ github.event_name == 'release' }}
uses: svenstaro/[email protected]
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{github.workspace}}/build/fast_*.tar.xz
file_glob: true
tag: ${{ github.ref }}
overwrite: true
- name: Upload Python wheel to release
if: ${{ github.event_name == 'release' }}
uses: svenstaro/[email protected]
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{github.workspace}}/build/pyFAST-*.whl
file_glob: true
tag: ${{ github.ref }}
overwrite: true
- name: Upload Python wheel to PyPi
if: ${{ github.event_name == 'release' && !contains(github.ref, 'rc') }}
run: |
twine upload --username __token__ --password ${{ secrets.PYPI_API_TOKEN }} ${{github.workspace}}/build/pyFAST-*.whl
test-cpp:
name: Run C++ Tests
needs: [build]
runs-on: [self-hosted, linux]
steps:
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: 'Archive package (tar.xz)'
path: ${{github.workspace}}/download/
- name: Extract artifact
run: |
mkdir -p ${{github.workspace}}/download/
cd ${{github.workspace}}/download/
tar -xf fast_*.tar.xz -C ${{github.workspace}}
- name: Download test data
run: |
cd ${{github.workspace}}
cd fast*
cd fast/bin/
./downloadTestData
- name: Run tests
env:
DISPLAY: ':1'
run: |
cd ${{github.workspace}}
cd fast_*
cd fast/bin/
./testFAST ~[visual]
- name: Cleanup
if: always()
run: |
rm -Rf ${{github.workspace}}
rm -Rf $HOME/FAST/kernel_binaries/*
test-python:
name: Run Python Tests
needs: [build]
runs-on: [self-hosted, linux]
steps:
- uses: actions/checkout@v2
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: 'Python wheel'
path: ${{github.workspace}}/download/
- name: Create environment and install python packages
run: |
cd ${{github.workspace}}
mkdir tmp
cd tmp
virtualenv -p python3 venv
source venv/bin/activate
pip3 install pytest
pip3 install ${{github.workspace}}/download/pyFAST-*.whl
- name: Run tests
env:
DISPLAY: ':1'
run: |
cd ${{github.workspace}}/tmp/
source venv/bin/activate
pytest ../source/FAST/
- name: Cleanup
if: always()
run: |
rm -Rf ${{github.workspace}}/download/
rm -Rf ${{github.workspace}}/tmp/
rm -Rf $HOME/FAST/kernel_binaries/*