forked from BioDynaMo/biodynamo
-
Notifications
You must be signed in to change notification settings - Fork 0
131 lines (117 loc) · 4.04 KB
/
ubuntu-ci.yml
File metadata and controls
131 lines (117 loc) · 4.04 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
name: Ubuntu CI
on:
push:
pull_request:
branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
strategy:
matrix:
os: [ubuntu-22.04, ubuntu-24.04]
runs-on: ${{ matrix.os }}
steps:
- name: Set python openssl package
run: |
if [ "${{ env.OSVERS }}" = "ubuntu-20.04" ]; then
echo "PYOPENSSL=python-openssl" >> $GITHUB_ENV
fi
if [ "${{ env.OSVERS }}" = "ubuntu-22.04" ]; then
echo "PYOPENSSL=python3-openssl" >> $GITHUB_ENV
fi
if [ "${{ env.OSVERS }}" = "ubuntu-24.04" ]; then
echo "PYOPENSSL=python3-openssl" >> $GITHUB_ENV
fi
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libopenmpi-dev gcc-11 g++-11 libomp5 libomp-dev libnuma-dev freeglut3-dev \
libreadline-dev libsqlite3-dev tk-dev ${{ env.PYOPENSSL }} ninja-build libblas-dev liblapack-dev libgit2-dev
curl -L -O https://github.com/Kitware/CMake/releases/download/v3.19.3/cmake-3.19.3-Linux-x86_64.sh
chmod +x cmake-3.19.3-Linux-x86_64.sh
sudo ./cmake-3.19.3-Linux-x86_64.sh --skip-license --prefix=/usr/local
- name: Start Xvfb
run: |
set -e
sudo apt-get -y install xvfb
XVFBARGS=":99 -ac -screen 0 2560x1440x24"
/usr/bin/Xvfb $XVFBARGS >> /tmp/Xvfb.out 2>&1 &
disown -ar
sleep 3
- name: Set OSVERS
run: |
ID=$(grep -oP '(?<=^ID=).+' /etc/os-release | tr -d '"')
VERSION=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"')
echo "OSVERS=$ID-$VERSION" >> $GITHUB_ENV
- name: Cache pyenv
uses: actions/cache@v4
id: pyenv-cache
with:
path: ~/.pyenv
key: ${{ env.OSVERS }}-pyenv-3.9.1
- name: Install pyenv dependency
if: steps.pyenv-cache.outputs.cache-hit != 'true'
run: |
if [ ! -f "$HOME/.pyenv/bin/pyenv" ]; then
curl https://pyenv.run | bash
fi
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.9.1
pyenv shell 3.9.1
- name: Checkout BioDynaMo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache Third Party Packages
uses: actions/cache@v4
with:
path: build/third_party
key: ${{ env.OSVERS }}-third-party-${{ hashFiles('cmake/external/SHA256Digests.cmake') }}
- name: Build BioDynaMo
shell: bash
run: |
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
pyenv shell 3.9.1
cmake -G Ninja \
-Dparaview=ON \
-Dbenchmark=ON \
-Dlibgit2=ON \
-DCMAKE_BUILD_TYPE=Release \
-B build
cmake --build build --parallel --config Release
- name: Unit tests BioDynaMo
shell: bash
working-directory: build
run: |
. bin/thisbdm.sh
bdm config
export DISPLAY=:99.0
ninja run-unit-tests
- name: Style guide checks
shell: bash
run: |
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
pyenv shell 3.9.1
wget https://apt.llvm.org/llvm-snapshot.gpg.key
sudo apt-key add llvm-snapshot.gpg.key
sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main"
sudo apt update
sudo apt install -y cloc clang-tidy clang-format
cloc --exclude-dir=build .
cmake -B build
cd build
cmake --build . --target fetch-master
cmake --build . --target gtest || true
cmake --build . --target show-format || true
cmake --build . --target show-tidy || true
cmake --build . --target check-cpplint || true
if: github.event_name == 'pull_request' && matrix.os == 'ubuntu-22.04'