gitlab-ci: Add csbuild
[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   DEBIAN_CROSS_BUILD: buildenv-debian-cross
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 fedora/csbuild:
81   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
82   script:
83   - |
84     if [[ -z "$CI_COMMIT_BEFORE_SHA" ]]; then
85         export CI_COMMIT_BEFORE_SHA=$(git rev-parse HEAD^)
86     fi
87
88     # Check if the commit exists in this branch
89     # This is not the case for a force push
90     git branch --contains $CI_COMMIT_BEFORE_SHA 2>/dev/null || export CI_COMMIT_BEFORE_SHA=$(git rev-parse HEAD^)
91
92     export CI_COMMIT_RANGE="$CI_COMMIT_BEFORE_SHA..$CI_COMMIT_SHA"
93
94   - csbuild
95     --build-dir=obj-csbuild
96     --prep-cmd="cmake -DCMAKE_BUILD_TYPE=Debug -DPICKY_DEVELOPER=ON -DUNIT_TESTING=ON @SRCDIR@"
97     --build-cmd "make clean && make -j$(nproc)"
98     --git-commit-range $CI_COMMIT_RANGE
99     --color
100     --print-current --print-fixed
101   tags:
102   - shared
103   except:
104   - tags
105   artifacts:
106     expire_in: 1 week
107     when: on_failure
108     paths:
109       - obj-csbuild/
110
111 freebsd/x86_64:
112   image:
113   script:
114   - mkdir -p obj && cd obj && cmake
115     -DCMAKE_BUILD_TYPE=RelWithDebInfo
116     -DPICKY_DEVELOPER=ON
117     -DUNIT_TESTING=ON .. &&
118     make && ctest --output-on-failure
119   tags:
120   - freebsd
121   except:
122   - tags
123   only:
124   - branches@cwrap/socket_wrapper
125   - branches@cryptomilk/socket_wrapper
126   artifacts:
127     expire_in: 1 week
128     when: on_failure
129     paths:
130       - obj/
131
132 .Debian.cross.template: &Debian_cross_template
133   stage: test
134   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_CROSS_BUILD
135   script:
136   - build=$(dpkg-architecture -qDEB_HOST_GNU_TYPE)
137   - host="${CI_JOB_NAME#*.cross.}"
138   - mkdir -p obj && cd obj && cmake
139     -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-Debian-mips.cmake
140     -DCMAKE_BUILD_TYPE=RelWithDebInfo
141     -DUNIT_TESTING=ON .. && make -j$(nproc) &&
142     ctest --output-on-failure
143   tags:
144   - shared
145   except:
146   - tags
147   artifacts:
148     expire_in: 1 week
149     when: on_failure
150     paths:
151       - obj/
152
153 Debian.cross.mips-linux-gnu:
154   <<: *Debian_cross_template
155
156 tumbleweed/x86_64/gcc:
157   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
158   script:
159   - mkdir -p obj && cd obj && cmake
160     -DCMAKE_BUILD_TYPE=RelWithDebInfo
161     -DPICKY_DEVELOPER=ON
162     -DUNIT_TESTING=ON .. &&
163     make -j$(nproc) && ctest --output-on-failure
164   tags:
165   - shared
166   except:
167   - tags
168   artifacts:
169     expire_in: 1 week
170     when: on_failure
171     paths:
172       - obj/
173
174 tumbleweed/x86_64/gcc7:
175   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
176   script:
177   - mkdir -p obj && cd obj && cmake
178     -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7
179     -DCMAKE_BUILD_TYPE=RelWithDebInfo
180     -DPICKY_DEVELOPER=ON
181     -DUNIT_TESTING=ON .. &&
182     make -j$(nproc) && ctest --output-on-failure
183   tags:
184   - shared
185   except:
186   - tags
187   artifacts:
188     expire_in: 1 week
189     when: on_failure
190     paths:
191       - obj/
192
193 tumbleweed/x86_64/clang:
194   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
195   script:
196   - mkdir -p obj && cd obj && cmake
197     -DCMAKE_BUILD_TYPE=RelWithDebInfo
198     -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
199     -DPICKY_DEVELOPER=ON
200     -DUNIT_TESTING=ON .. &&
201     make -j$(nproc) && ctest --output-on-failure
202   tags:
203   - shared
204   except:
205   - tags
206   artifacts:
207     expire_in: 1 week
208     when: on_failure
209     paths:
210       - obj/
211
212 tumbleweed/static-analysis:
213   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
214   script:
215   - export CCC_CC=clang
216   - export CCC_CXX=clang++
217   - mkdir -p obj && cd obj && scan-build cmake
218     -DCMAKE_BUILD_TYPE=Debug
219     -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
220     -DPICKY_DEVELOPER=ON
221     -DUNIT_TESTING=ON .. &&
222     scan-build --status-bugs -o scan make -j$(nproc)
223   tags:
224   - shared
225   except:
226   - tags
227   artifacts:
228     expire_in: 1 week
229     when: on_failure
230     paths:
231       - obj/scan
232
233 tumbleweed/helgrind:
234   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
235   script:
236   - mkdir -p obj && cd obj && cmake
237     -DCMAKE_BUILD_TYPE=Debug
238     -DPICKY_DEVELOPER=ON
239     -DUNIT_TESTING=ON
240     -DHELGRIND_TESTING=ON .. &&
241     make -j$(nproc) && ctest --output-on-failure
242   tags:
243   - shared
244   except:
245   - tags
246   artifacts:
247     expire_in: 1 week
248     when: on_failure
249     paths:
250       - obj/