-
Notifications
You must be signed in to change notification settings - Fork 1
/
.gitlab-ci.yml
150 lines (128 loc) · 4.08 KB
/
.gitlab-ci.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
# Global #
stages:
- Platform Tests
- Analysis
variables:
GIT_SUBMODULE_STRATEGY: recursive
CTEST_OUTPUT_ON_FAILURE: '1'
# Platform Tests #
.platform_unix_template: &platform_unix_template
stage: Platform Tests
tags:
- docker-linux
script:
- mkdir build && cd build
- conan install .. --build missing
- cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DBUILD_EXAMPLES=ON -DNO_VULKAN_DEVICE=ON -DBUILD_WINDOW_TESTS=OFF ${CMAKE_OPTIONS}
- ninja
.platform_windows_template: &platform_windows_template
stage: Platform Tests
tags:
- docker-windows
script:
- echo 'try {' | out-file -encoding utf8 build.ps1
- echo 'cd ..; mkdir workdir-cpy' | out-file -encoding utf8 -append build.ps1
- echo 'Copy-Item C:\workdir\* -Destination C:\workdir-cpy -Recurse' | out-file -encoding utf8 -append build.ps1
- echo 'cd workdir-cpy' | out-file -encoding utf8 -append build.ps1
- echo 'mkdir build; cd build' | out-file -encoding utf8 -append build.ps1
- echo 'conan install .. --build missing' | out-file -encoding utf8 -append build.ps1
- echo "cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DBUILD_EXAMPLES=ON -DNO_VULKAN_DEVICE=ON -DBUILD_WINDOW_TESTS=OFF $env:CMAKE_OPTIONS" | out-file -encoding utf8 -append build.ps1
- echo 'if(-not $?){throw}' | out-file -encoding utf8 -append build.ps1
- echo 'ninja' | out-file -encoding utf8 -append build.ps1
- echo 'if(-not $?){throw}' | out-file -encoding utf8 -append build.ps1
- echo '} catch { exit 1 }' | out-file -encoding utf8 -append build.ps1
- docker run --rm -v ${pwd}:C:\workdir $env:IMAGE C:\workdir\build.ps1
Fedora/GCC:
image: stabletec/build-core:fedora-gcc
<<: *platform_unix_template
Fedora/Clang:
image: stabletec/build-core:fedora-clang
<<: *platform_unix_template
openSUSE/GCC:
image: stabletec/build-core:opensuse-gcc
<<: *platform_unix_template
openSUSE/Clang:
image: stabletec/build-core:opensuse-clang
<<: *platform_unix_template
Ubuntu/GCC:
image: stabletec/build-core:ubuntu-gcc
<<: *platform_unix_template
Ubuntu/Clang:
image: stabletec/build-core:ubuntu-clang
<<: *platform_unix_template
Windows/MSVC2017:
variables:
IMAGE: stabletec/build-core:windows-msvc
<<: *platform_windows_template
Windows/Clang-cl:
variables:
IMAGE: stabletec/build-core:windows-clang-cl
<<: *platform_windows_template
# Analysis #
.Doxygen Documentation:
stage: Analysis
image: stabletec/doxygen:latest
tags:
- docker-linux
script:
- mkdir build && cd build
- conan install ..
- cmake .. -DNO_COMPILE=ON
- make doc
- cd doc/latex
- make
artifacts:
name: DoxygenDocs
paths:
- build/doc
expire_in: 1 day
.Code Coverage:
stage: Analysis
image: stabletec/build-core:fedora-clang
tags:
- docker-linux
script:
- mkdir build && cd build
- conan install .. --build missing
- cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DCODE_COVERAGE=ON -DBUILD_TESTS=ON -DNO_VULKAN_DEVICE=ON -DBUILD_WINDOW_TESTS=OFF
- ninja
- ninja ccov
- ninja ccov-all
- ninja ccov-report
- ninja ccov-all-report
artifacts:
name: CodeCoverage
paths:
- build/ccov
expire_in: 1 day
.analysis_template: &analysis_template
stage: Analysis
image: stabletec/build-core:fedora-clang
allow_failure: true
tags:
- docker-linux
script:
- mkdir build && cd build
- conan install .. --build missing
- cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DBUILD_EXAMPLES=ON -DNO_VULKAN_DEVICE=ON -DBUILD_WINDOW_TESTS=OFF ${CMAKE_OPTIONS}
- ninja
Static Analysis:
variables:
CMAKE_OPTIONS: -DCLANG_TIDY=ON -DCPPCHECK=ON -DIWYU=ON
<<: *analysis_template
.ThreadSanitizer:
variables:
CMAKE_OPTIONS: -DUSE_SANITIZER=Thread
<<: *analysis_template
.AddressSanitizer:
variables:
CMAKE_OPTIONS: -DUSE_SANITIZER=Address
<<: *analysis_template
.LeakSanitizer:
variables:
CMAKE_OPTIONS: -DUSE_SANITIZER=Leak
<<: *analysis_template
.UndefinedSanitizer:
variables:
CMAKE_OPTIONS: -DUSE_SANITIZER=Undefined
<<: *analysis_template