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