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