77 - ' **'
88
99jobs :
10- # Build and test many combinations on Linux/OS X using Conan
11- clang-tidy :
12- container : johnmcfarlane/cnl_ci:clang-head-libcpp
13- runs-on : ubuntu-20.04
14- steps :
15- - uses : actions/checkout@v2
16-
17- - name : Initialise Conan
18- run : |
19- conan config install $GITHUB_WORKSPACE/.github/conan/settings.yml
20-
21- - name : Install dependencies
22- run : |
23- conan install \
24- --build=missing \
25- --profile $GITHUB_WORKSPACE/.github/conan/profiles/linux-clang-head-libc++ \
26- --settings:host build_type=Release \
27- --options clang_tidy=True \
28- --options int128=False \
29- --options sanitize=False \
30- --env CONAN_CMAKE_GENERATOR=Ninja \
31- $GITHUB_WORKSPACE
32-
33- - name : Build tests
34- run : conan build --build --configure $GITHUB_WORKSPACE
35-
36- - name : Test library
37- run : conan build --test $GITHUB_WORKSPACE
38-
39- # Build and test latest on Linux using only CMake
40- cmake :
41- strategy :
42- matrix :
43- compiler : [clang, gcc]
44- include :
45- - compiler : clang
46- stdlib-flag : " -stdlib=libc++"
47- toolchain : clang-libc++.cmake
48- container : johnmcfarlane/cnl_ci:clang-head-libcpp
49- - compiler : gcc
50- stdlib-flag : " "
51- toolchain : gcc-head.cmake
52- container : johnmcfarlane/cnl_ci:gcc-head
53- build_type : ["Debug", "Release"]
54- cxx-extensions : ["ON", "OFF"]
55- exceptions : ["ON", "OFF"]
56-
57- container : ${{matrix.container}}
58- runs-on : ubuntu-20.04
59-
60- steps :
61- - uses : actions/checkout@v2
62-
63- - name : Restore caches
64- uses : actions/cache@v2
65- with :
66- path : |
67- /github/home/.ccache
68- key : test-${{matrix.compiler}}-${{github.ref}}-${{github.sha}}
69- restore-keys : |
70- test-${{matrix.compiler}}-${{github.ref}}-
71- test-${{matrix.compiler}}-main-
72- test-${{matrix.compiler}}-
73-
74- - name : Build and Install GTest
75- env :
76- CXXFLAGS : ${{matrix.stdlib-flag}}
77- run : |
78- git clone https://github.com/google/googletest.git
79- cd googletest
80- git checkout 3c95bf552405fd0cc63cea0ca2f6c4cd89c8d356
81- cmake \
82- -DCMAKE_TOOLCHAIN_FILE:FILEPATH=$GITHUB_WORKSPACE/test/toolchain/${{matrix.toolchain}} \
83- .
84- cmake --build . --target install
85-
86- - name : Configure CNL
87- run : |
88- cmake \
89- -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
90- -DCMAKE_CXX_EXTENSIONS=${{matrix.cxx-extensions}} \
91- -DCMAKE_TOOLCHAIN_FILE:FILEPATH=$GITHUB_WORKSPACE/test/toolchain/${{matrix.toolchain}} \
92- -DCNL_EXCEPTIONS=${{matrix.exceptions}} \
93- -DCNL_SANITIZE=ON \
94- $GITHUB_WORKSPACE
95-
96- - name : Build CNL
97- run : cmake --build $GITHUB_WORKSPACE --target test-all
98-
99- - name : Test CNL
100- run : ctest --output-on-failure
101-
102- - name : ccache report
103- run : ccache -s
104-
105- # Build and test many combinations on Linux/OS X using Conan
106- conan :
107- strategy :
108- matrix :
109- name : [
110- clang-head-libc++, clang-head-libstdc++,
111- clang-13-libc++, clang-13-libstdc++,
112- clang-12-libstdc++,
113- clang-11-libstdc++,
114- clang-10-libstdc++,
115- gcc-head, gcc-11, gcc-10, osx-clang-13, osx-gcc-11, gcc-10-armv7
116- ]
117- include :
118- # Clang HEAD
119- - name : clang-head-libc++
120- generator : " Unix Makefiles"
121- linux-container : johnmcfarlane/cnl_ci:clang-head-libcpp
122- os-version : ubuntu-20.04
123- profile : linux-clang-head-libc++
124- - name : clang-head-libstdc++
125- linux-container : johnmcfarlane/cnl_ci:clang-head-libstdcpp
126- os-version : ubuntu-20.04
127- profile : linux-clang-head-libstdc++
128-
129- # Clang-13
130- - name : clang-13-libc++
131- linux-container : johnmcfarlane/cnl_ci:clang-13-libcpp
132- os-version : ubuntu-20.04
133- profile : linux-clang-13-libc++
134- - name : clang-13-libstdc++
135- linux-container : johnmcfarlane/cnl_ci:clang-13-libstdcpp
136- os-version : ubuntu-20.04
137- profile : linux-clang-13-libstdc++
138-
139- # Clang-12 (Contrary)
140- - name : clang-12-libstdc++
141- generator : " Unix Makefiles"
142- linux-container : johnmcfarlane/cnl_ci:clang-12-libstdcpp
143- os-version : ubuntu-20.04
144- profile : linux-clang-12-libstdc++
145-
146- # Clang-11
147- - name : clang-11-libstdc++
148- linux-container : johnmcfarlane/cnl_ci:clang-11-libstdcpp
149- os-version : ubuntu-20.04
150- profile : linux-clang-11-libstdc++
151-
152- # Clang-10
153- - name : clang-10-libstdc++
154- linux-container : johnmcfarlane/cnl_ci:clang-10-libstdcpp
155- os-version : ubuntu-20.04
156- profile : linux-clang-10-libstdc++
157-
158- # GCC HEAD
159- - name : gcc-head
160- linux-container : johnmcfarlane/cnl_ci:gcc-head
161- os-version : ubuntu-20.04
162- profile : linux-gcc-head
163-
164- # GCC-11
165- - name : gcc-11
166- linux-container : johnmcfarlane/cnl_ci:gcc-11
167- os-version : ubuntu-20.04
168- profile : linux-gcc-11
169-
170- # GCC-10
171- - name : gcc-10
172- generator : " Unix Makefiles"
173- linux-container : johnmcfarlane/cnl_ci:gcc-10
174- os-version : ubuntu-20.04
175- profile : linux-gcc-10
176-
177- # OS X Clang (latest)
178- - name : osx-clang-13
179- os-version : macos-10.15
180- profile : osx-clang-13
181-
182- # OS X GCC-11
183- - name : osx-gcc-11
184- os-version : macos-10.15
185- profile : osx-gcc-11
186-
187- # GCC-10 (for ARMv7)
188- - name : gcc-10-armv7
189- linux-container : johnmcfarlane/cnl_ci:gcc-10-arm
190- os-version : ubuntu-20.04
191- profile : linux-gcc-10-armv7
192-
193- container : ${{matrix.linux-container}}
194-
195- runs-on : ${{matrix.os-version}}
196-
197- steps :
198- - uses : actions/checkout@v2
199-
200- - name : Restore caches
201- uses : actions/cache@v2
202- with :
203- path : |
204- /github/home/.conan/data
205- /github/home/.ccache
206- /Users/runner/Library/Caches/ccache
207- key : test-${{matrix.name}}-${{github.ref}}-${{github.sha}}
208- restore-keys : |
209- test-${{matrix.name}}-${{github.ref}}-
210- test-${{matrix.name}}-main-
211- test-${{matrix.name}}-
212-
213- - name : Install Brew packages
214- if : ( matrix.os-version == 'macos-10.15' )
215- run : brew install ccache conan ninja
216-
217- - name : Initialise Conan
218- run : |
219- conan config install $GITHUB_WORKSPACE/.github/conan/settings.yml
220-
221- - name : Install dependencies
222- env :
223- CONAN_CMAKE_GENERATOR : " ${{matrix.generator}}"
224- run : |
225- conan install \
226- --build=missing \
227- --env:build CONAN_CMAKE_GENERATOR="${CONAN_CMAKE_GENERATOR:-Ninja}" \
228- --env:host CONAN_CMAKE_GENERATOR="${CONAN_CMAKE_GENERATOR:-Ninja}" \
229- --profile $GITHUB_WORKSPACE/.github/conan/profiles/${{matrix.profile}} \
230- --settings:build cmake:compiler.cppstd=gnu11 \
231- $GITHUB_WORKSPACE
232-
233- - name : Build tests
234- run : conan build --build --configure --install $GITHUB_WORKSPACE
235-
236- - name : Test library
237- if : ( matrix.name != 'gcc-10-armv7' )
238- run : conan build --test $GITHUB_WORKSPACE
239-
240- - name : Run benchmarks
241- if : ( matrix.name != 'clang-11' && matrix.name != 'gcc-10-armv7' )
242- run : |
243- ./test/benchmark/test-benchmark --benchmark_format=csv | tee result.csv \
244- "${GITHUB_WORKSPACE}"/test/benchmark/report.py result.csv
245-
246- - name : ccache report
247- run : ccache -s
248-
249- # Build and test on Windows using Conan
250- windows :
251- strategy :
252- matrix :
253- name : [2022-64, 2022-32, 2019-64, 2019-32]
254- include :
255- - name : 2022-64
256- build-profile : msvc-17-x86_64
257- host-profile : msvc-17-x86_64
258- runs-on : " windows-2022"
259- - name : 2022-32
260- build-profile : msvc-17-x86_64
261- host-profile : msvc-17-x86
262- runs-on : " windows-2022"
263- - name : 2019-64
264- build-profile : msvc-16-x86_64
265- host-profile : msvc-16-x86_64
266- runs-on : " windows-2019"
267- - name : 2019-32
268- build-profile : msvc-16-x86_64
269- host-profile : msvc-16-x86
270- runs-on : " windows-2019"
271- build_type : ["Debug", "Release"]
272-
273- runs-on : ${{matrix.runs-on}}
274-
275- steps :
276- - uses : actions/checkout@v2
277-
278- - name : Restore caches
279- uses : actions/cache@v2
280- with :
281- path : |
282- ~\AppData\Local\pip\Cache
283- ~\.conan\data
284- ~\.ccache
285- key : test-${{matrix.name}}-${{github.ref}}-${{github.sha}}
286- restore-keys : |
287- test-${{matrix.name}}-${{github.ref}}-
288- test-${{matrix.name}}-main-
289- test-${{matrix.name}}-
290-
291- - name : Install Conan
292- run : |
293- pip.exe install conan;
294-
295- - name : Create build directory
296- run : mkdir ${{runner.workspace}}\build
297-
298- - name : Install dependencies
299- working-directory : ${{runner.workspace}}/build
300- run : |
301- conan install `
302- --build=missing `
303- --profile:build $env:GITHUB_WORKSPACE/.github/conan/profiles/${{matrix.build-profile}} `
304- --profile:host $env:GITHUB_WORKSPACE/.github/conan/profiles/${{matrix.host-profile}} `
305- --settings:build build_type=Release `
306- --settings:build cmake:compiler.cppstd=17 `
307- --settings:host build_type="${{matrix.build_type}}" `
308- $env:GITHUB_WORKSPACE
309-
310- - name : Build and run tests
311- working-directory : ${{runner.workspace}}/build
312- run : conan build --build --configure --test $env:GITHUB_WORKSPACE
313-
314- - name : Run benchmarks
315- working-directory : ${{runner.workspace}}/build
316- run : test\benchmark\${{matrix.build_type}}\test-benchmark.exe
317-
318- # Install on mature Linux distro using only CMake
319- install :
320- runs-on : ubuntu-18.04
321- steps :
322- - uses : actions/checkout@v2
323-
324- - name : Configure CNL
325- run : cmake $GITHUB_WORKSPACE
326-
327- - name : Install CNL
328- run : sudo cmake --build $GITHUB_WORKSPACE --target install
329-
330- # Test source formatting
331- clang-format :
332- runs-on : ubuntu-20.04
333- container : johnmcfarlane/cnl_ci:clang-13
334- steps :
335- - uses : actions/checkout@v2
336-
337- - name : Format code
338- shell : bash
339- run : $GITHUB_WORKSPACE/test/scripts/clang-format
340-
341- - name : Show/test for changes
342- shell : bash
343- run : |
344- git diff
345- if [[ `git status --porcelain` ]]; then exit 1; fi
346-
347- # Test shell scripts
348- shellcheck :
349- runs-on : ubuntu-20.04
350- container : johnmcfarlane/cnl_ci:base-20.04
351- steps :
352- - uses : actions/checkout@v2
353-
354- - name : Run shellcheck
355- shell : bash
356- run : $GITHUB_WORKSPACE/test/scripts/shellcheck
357-
35810 # Test markdown
35911 markdownlint :
36012 runs-on : ubuntu-20.04
@@ -366,40 +18,4 @@ jobs:
36618 run : |
36719 sudo snap install mdl
36820 $GITHUB_WORKSPACE/test/scripts/markdownlint
369-
370- # Test YAML
371- yamllint :
372- runs-on : ubuntu-20.04
373- steps :
374- - uses : actions/checkout@v2
375-
376- - name : Run yamllint
377- shell : bash
378- run : |
379- sudo apt install yamllint
380- $GITHUB_WORKSPACE/test/scripts/yamllint
381-
382- # Test documentation generation
383- doxygen :
384- runs-on : ubuntu-18.04
385- container : johnmcfarlane/cnl_ci:base-21.10
386- steps :
387- - uses : actions/checkout@v2
388-
389- - name : Test Doxyfile
390- shell : bash
391- run : |
392- doxygen -s -u doc/Doxyfile
393- rm doc/Doxyfile.bak
394- git diff --exit-code
395-
396- - name : Generate documentation
397- shell : bash
398- run : $GITHUB_WORKSPACE/doc/generate
399-
400- - name : Upload documentation
401- uses : actions/upload-artifact@v2
402- with :
403- name : documentation
404- path : ${{github.workspace}}/htdocs
40521 ...
0 commit comments