gitlab-ci: Add Ubuntu 32bit build
[socket_wrapper.git] / .gitlab-ci.yml
1 ---
2 variables:
3   BUILD_IMAGES_PROJECT: cmocka/gitlab-build-images
4   FEDORA_BUILD: buildenv-fedora
5   CENTOS7_BUILD: buildenv-centos7
6   TUMBLEWEED_BUILD: buildenv-tumbleweed
7   MINGW_BUILD: buildenv-mingw
8   UBUNTU_BUILD: buildenv-ubuntu
9   UBUNTU32_BUILD: buildenv-ubuntu32
10
11 stages:
12   - build
13   - test
14   - analysis
15
16 centos7/x86_64:
17   stage: test
18   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$CENTOS7_BUILD
19   script:
20     - mkdir -p obj && cd obj && cmake3
21       -DCMAKE_BUILD_TYPE=RelWithDebInfo
22       -DPICKY_DEVELOPER=ON
23       -DUNIT_TESTING=ON .. &&
24       make -j$(nproc) && ctest --output-on-failure
25   tags:
26     - shared
27   except:
28     - tags
29   artifacts:
30     expire_in: 1 week
31     when: on_failure
32     paths:
33       - obj/
34
35 fedora/x86_64:
36   stage: test
37   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
38   script:
39     - mkdir -p obj && cd obj && cmake
40       -DCMAKE_BUILD_TYPE=RelWithDebInfo
41       -DPICKY_DEVELOPER=ON
42       -DUNIT_TESTING=ON .. &&
43       make -j$(nproc) && ctest --output-on-failure
44   tags:
45     - shared
46   except:
47     - tags
48   artifacts:
49     expire_in: 1 week
50     when: on_failure
51     paths:
52       - obj/
53
54 fedora/address-sanitizer:
55   stage: build
56   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
57   script:
58     - mkdir -p obj && cd obj && cmake
59       -DCMAKE_BUILD_TYPE=AddressSanitizer
60       -DPICKY_DEVELOPER=ON
61       -DUNIT_TESTING=ON .. &&
62       make -j$(nproc) && ctest --output-on-failure
63   tags:
64     - shared
65   except:
66     - tags
67   artifacts:
68     expire_in: 1 week
69     when: on_failure
70     paths:
71       - obj/
72
73 fedora/undefined-sanitizer:
74   stage: analysis
75   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
76   script:
77     - mkdir -p obj && cd obj && cmake
78       -DCMAKE_BUILD_TYPE=UndefinedSanitizer
79       -DUNIT_TESTING=ON ..
80       && make -j$(nproc) && ctest --output-on-failure
81   tags:
82     - shared
83   except:
84     - tags
85   artifacts:
86     expire_in: 1 week
87     when: on_failure
88     paths:
89       - obj/
90
91 # realpath() doesn't work with libtsan and returns EINVAL
92 #
93 # fedora/thread-sanitizer:
94 tumbleweed/thread-sanitizer:
95   stage: analysis
96   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
97   script:
98     - mkdir -p obj && cd obj && cmake
99       -DCMAKE_BUILD_TYPE=ThreadSanitizer
100       -DPICKY_DEVELOPER=ON
101       -DUNIT_TESTING=ON .. &&
102       make -j$(nproc) && ctest --output-on-failure
103   tags:
104     - shared
105   except:
106     - tags
107   artifacts:
108     expire_in: 1 week
109     when: on_failure
110     paths:
111       - obj/
112
113 fedora/csbuild:
114   stage: analysis
115   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
116   script:
117     - |
118       if [[ -z "$CI_COMMIT_BEFORE_SHA" ]]; then
119           export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~20")
120       fi
121
122       # Check if the commit exists in this branch
123       # This is not the case for a force push
124       git branch --contains $CI_COMMIT_BEFORE_SHA 2>/dev/null ||
125         export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~20")
126
127       export CI_COMMIT_RANGE="$CI_COMMIT_BEFORE_SHA..$CI_COMMIT_SHA"
128
129     - csbuild
130       --build-dir=obj-csbuild
131       --prep-cmd="cmake -DCMAKE_BUILD_TYPE=Debug -DPICKY_DEVELOPER=ON -DUNIT_TESTING=ON @SRCDIR@"
132       --build-cmd "make clean && make -j$(nproc)"
133       --git-commit-range $CI_COMMIT_RANGE
134       --color
135       --print-current --print-fixed
136   tags:
137     - shared
138   except:
139     - tags
140   artifacts:
141     expire_in: 1 week
142     when: on_failure
143     paths:
144       - obj-csbuild/
145
146 freebsd/x86_64:
147   stage: test
148   image:
149   script:
150     - mkdir -p obj && cd obj && cmake
151       -DCMAKE_BUILD_TYPE=RelWithDebInfo
152       -DPICKY_DEVELOPER=ON
153       -DUNIT_TESTING=ON .. &&
154       make && ctest --output-on-failure
155   tags:
156     - freebsd
157   except:
158     - tags
159   only:
160     - branches@cwrap/socket_wrapper
161     - branches@cryptomilk/socket_wrapper
162     - branches@metze/socket_wrapper
163   artifacts:
164     expire_in: 1 week
165     when: on_failure
166     paths:
167       - obj/
168
169 tumbleweed/x86_64/gcc:
170   stage: test
171   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
172   script:
173     - mkdir -p obj && cd obj && cmake
174       -DCMAKE_BUILD_TYPE=RelWithDebInfo
175       -DPICKY_DEVELOPER=ON
176       -DUNIT_TESTING=ON .. &&
177       make -j$(nproc) && ctest --output-on-failure
178   tags:
179     - shared
180   except:
181     - tags
182   artifacts:
183     expire_in: 1 week
184     when: on_failure
185     paths:
186       - obj/
187
188 tumbleweed/x86_64/gcc7:
189   stage: test
190   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
191   script:
192     - mkdir -p obj && cd obj && cmake
193       -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7
194       -DCMAKE_BUILD_TYPE=RelWithDebInfo
195       -DPICKY_DEVELOPER=ON
196       -DUNIT_TESTING=ON .. &&
197       make -j$(nproc) && ctest --output-on-failure
198   tags:
199     - shared
200   except:
201     - tags
202   artifacts:
203     expire_in: 1 week
204     when: on_failure
205     paths:
206       - obj/
207
208 tumbleweed/x86_64/clang:
209   stage: test
210   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
211   script:
212     - mkdir -p obj && cd obj && cmake
213       -DCMAKE_BUILD_TYPE=RelWithDebInfo
214       -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
215       -DPICKY_DEVELOPER=ON
216       -DUNIT_TESTING=ON .. &&
217       make -j$(nproc) && ctest --output-on-failure
218   tags:
219     - shared
220   except:
221     - tags
222   artifacts:
223     expire_in: 1 week
224     when: on_failure
225     paths:
226       - obj/
227
228 tumbleweed/x86/gcc:
229   stage: test
230   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
231   script:
232     - mkdir -p obj && cd obj && cmake
233       -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-cross-m32.cmake
234       -DCMAKE_BUILD_TYPE=RelWithDebInfo
235       -DPICKY_DEVELOPER=ON
236       -DUNIT_TESTING=ON .. &&
237       make -j$(nproc) && ctest --output-on-failure
238   tags:
239     - shared
240   except:
241     - tags
242   artifacts:
243     expire_in: 1 week
244     when: on_failure
245     paths:
246       - obj/
247
248 tumbleweed/static-analysis:
249   stage: analysis
250   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
251   script:
252     - export CCC_CC=clang
253     - export CCC_CXX=clang++
254     - mkdir -p obj && cd obj && scan-build cmake
255       -DCMAKE_BUILD_TYPE=Debug
256       -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
257       -DPICKY_DEVELOPER=ON
258       -DUNIT_TESTING=ON .. &&
259       scan-build --status-bugs -o scan make -j$(nproc)
260   tags:
261     - shared
262   except:
263     - tags
264   artifacts:
265     expire_in: 1 week
266     when: on_failure
267     paths:
268       - obj/scan
269
270 tumbleweed/helgrind:
271   stage: analysis
272   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
273   script:
274     - mkdir -p obj && cd obj && cmake
275       -DCMAKE_BUILD_TYPE=Debug
276       -DPICKY_DEVELOPER=ON
277       -DUNIT_TESTING=ON
278       -DHELGRIND_TESTING=ON .. &&
279       make -j$(nproc) && ctest --output-on-failure
280   tags:
281     - shared
282   except:
283     - tags
284   artifacts:
285     expire_in: 1 week
286     when: on_failure
287     paths:
288       - obj/
289   only:
290     variables:
291       - $VALGRIND_SUPPORTS_FORKED_MUTEXES == "yes"
292
293 ubuntu/x86_64:
294   stage: test
295   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$UBUNTU_BUILD
296   script:
297     - mkdir -p obj && cd obj && cmake
298       -DCMAKE_BUILD_TYPE=RelWithDebInfo
299       -DPICKY_DEVELOPER=ON
300       -DUNIT_TESTING=ON .. &&
301       make -j$(nproc) && ctest --output-on-failure
302   tags:
303     - shared
304   except:
305     - tags
306   artifacts:
307     expire_in: 1 week
308     when: on_failure
309     paths:
310       - obj/
311
312 ubuntu/x86:
313   stage: test
314   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$UBUNTU32_BUILD
315   script:
316     - mkdir -p obj && cd obj && cmake
317       -DCMAKE_BUILD_TYPE=RelWithDebInfo
318       -DPICKY_DEVELOPER=ON
319       -DUNIT_TESTING=ON .. &&
320       make -j$(nproc) && ctest --output-on-failure
321   tags:
322     - shared
323   except:
324     - tags
325   artifacts:
326     expire_in: 1 week
327     when: on_failure
328     paths:
329       - obj/