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