-
Notifications
You must be signed in to change notification settings - Fork 42
183 lines (130 loc) · 4.24 KB
/
linux.yml
File metadata and controls
183 lines (130 loc) · 4.24 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
name: unix
on:
push:
pull_request:
branches:
- main
workflow_dispatch:
schedule:
- cron: '0 1 * * *'
env:
VCPKG_ROOT_DIR: ${{ github.workspace }}/vcpkg
# Tells vcpkg where binary packages are stored.
VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vcpkg/bincache
# Let's use GitHub Action cache as storage for the vcpkg Binary Caching feature.
VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite'
jobs:
lint:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with: { python-version: "3.11" }
- name: Install codespell
run: pip3 install codespell
- name: Install clang-format
run: pip3 install clang-format
- name: Lint
run: cmake -D FORMAT_COMMAND=clang-format -P cmake/lint.cmake
- name: Spell check
if: always()
run: cmake -P cmake/spell.cmake
test:
needs: [lint]
name: ubuntu-test-${{ matrix.build-type }}-hwloc=${{ matrix.hwloc }}
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
build-type: [Debug, Release]
hwloc: [ON, OFF]
env:
CXXFLAGS: ${{ matrix.exceptions }}
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
- name: Install hwloc
if: matrix.hwloc == 'ON'
shell: pwsh
run: sudo apt-get update && sudo apt-get install libhwloc-dev -y
- name: Restore from cache the dependencies and generate project files
shell: pwsh
run: cmake --preset=ci-ubuntu -DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
- name: Build
run: cmake --build build --config ${{ matrix.build-type }} -j 2
- name: Install
run: cmake --install build --config ${{ matrix.build-type }} --prefix prefix
- name: Test
working-directory: build
run: ctest --output-on-failure --no-tests=error -C ${{ matrix.build-type }}
sanitize:
needs: [lint]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
- name: Install LLVM and Clang
uses: KyleMayes/install-llvm-action@v1
with:
version: "17.0.2"
env: true
- name: Configure
run: cmake --preset=ci-sanitize
- name: Build
run: cmake --build build/sanitize -j 2
- name: Test
working-directory: build/sanitize
env:
ASAN_OPTIONS: "strict_string_checks=1:\
detect_stack_use_after_return=1:\
check_initialization_order=1:\
strict_init_order=1:\
detect_leaks=1"
UBSAN_OPTIONS: print_stacktrace=1
run: ctest --output-on-failure --no-tests=error
coverage:
needs: [lint]
runs-on: ubuntu-22.04
if: github.ref == 'refs/heads/main' && github.repository_owner == 'conorwilliams' && github.event_name == 'push'
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
- name: Install LCov
run: sudo apt-get update -q
&& sudo apt-get install lcov -q -y
- name: Configure
run: cmake --preset=ci-coverage
- name: Build
run: cmake --build build/coverage -j 2
- name: Test
working-directory: build/coverage
run: ctest --output-on-failure --no-tests=error
- name: Process coverage info
run: cmake --build build/coverage -t coverage
- name: Submit to codecov.io
uses: codecov/codecov-action@v3
with:
file: build/coverage/coverage.info
docs:
# Deploy docs only when builds succeed
needs: [sanitize, test]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with: { python-version: "3.8" }
- uses: ssciwr/doxygen-install@v1
with:
version: "1.9.8"
- name: Install python dependencies
run: pip3 install -r docs/requirements.txt
- name: Configure docs
run: cmake -S ./docs -B build/docs
- name: Build docs
run: cmake --build build/docs
- name: Deploy docs
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./build/docs/sphinx
if: github.ref == 'refs/heads/main' && github.repository_owner == 'conorwilliams' && github.event_name == 'push'