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