f51694789147b7a328a503befe48780b574dafa4
[uid_wrapper.git] / .gitlab-ci.yml
1 variables:
2   GIT_DEPTH: 3
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   DEBIAN_CROSS_BUILD: buildenv-debian-cross
9
10 centos7/x86_64:
11   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$CENTOS7_BUILD
12   script:
13   - mkdir -p obj && cd obj && cmake3
14     -DCMAKE_BUILD_TYPE=RelWithDebInfo
15     -DPICKY_DEVELOPER=ON
16     -DUNIT_TESTING=ON .. &&
17     make -j$(nproc) && ctest --output-on-failure
18   tags:
19   - shared
20   except:
21   - tags
22   artifacts:
23     expire_in: 1 week
24     when: on_failure
25     paths:
26       - obj/
27
28 fedora/x86_64:
29   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
30   script:
31   - mkdir -p obj && cd obj && cmake
32     -DCMAKE_BUILD_TYPE=RelWithDebInfo
33     -DPICKY_DEVELOPER=ON
34     -DUNIT_TESTING=ON .. &&
35     make -j$(nproc) && ctest --output-on-failure
36   tags:
37   - shared
38   except:
39   - tags
40   artifacts:
41     expire_in: 1 week
42     when: on_failure
43     paths:
44       - obj/
45
46 fedora/address-sanitizer:
47   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
48   script:
49   - mkdir -p obj && cd obj && cmake
50     -DCMAKE_BUILD_TYPE=AddressSanitizer
51     -DPICKY_DEVELOPER=ON
52     -DUNIT_TESTING=ON .. &&
53     make -j$(nproc) && ctest --output-on-failure
54   tags:
55   - shared
56   except:
57   - tags
58   artifacts:
59     expire_in: 1 week
60     when: on_failure
61     paths:
62       - obj/
63
64 fedora/undefined-sanitizer:
65   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
66   script:
67   - mkdir -p obj && cd obj && cmake
68     -DCMAKE_BUILD_TYPE=UndefinedSanitizer
69     -DUNIT_TESTING=ON ..
70     && make -j$(nproc) && ctest --output-on-failure
71   tags:
72   - shared
73   except:
74   - tags
75   artifacts:
76     expire_in: 1 week
77     when: on_failure
78     paths:
79       - obj/
80
81 fedora/csbuild:
82   variables:
83     GIT_DEPTH: 20
84   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
85   script:
86   - |
87     if [[ -z "$CI_COMMIT_BEFORE_SHA" ]]; then
88         export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~15")
89     fi
90
91     # Check if the commit exists in this branch
92     # This is not the case for a force push
93     git branch --contains $CI_COMMIT_BEFORE_SHA 2>/dev/null || export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~15")
94
95     export CI_COMMIT_RANGE="$CI_COMMIT_BEFORE_SHA..$CI_COMMIT_SHA"
96
97   - csbuild
98     --build-dir=obj-csbuild
99     --prep-cmd="cmake -DCMAKE_BUILD_TYPE=Debug -DPICKY_DEVELOPER=ON -DUNIT_TESTING=ON @SRCDIR@"
100     --build-cmd "make clean && make -j$(nproc)"
101     --git-commit-range $CI_COMMIT_RANGE
102     --color
103     --print-current --print-fixed
104   tags:
105   - shared
106   except:
107   - tags
108   artifacts:
109     expire_in: 1 week
110     when: on_failure
111     paths:
112       - obj-csbuild/
113
114 freebsd/x86_64:
115   image:
116   script:
117   - mkdir -p obj && cd obj && cmake
118     -DCMAKE_BUILD_TYPE=RelWithDebInfo
119     -DPICKY_DEVELOPER=ON
120     -DUNIT_TESTING=ON .. &&
121     make && ctest --output-on-failure
122   tags:
123   - freebsd
124   except:
125   - tags
126   only:
127   - branches@cwrap/uid_wrapper
128   - branches@cryptomilk/uid_wrapper
129   artifacts:
130     expire_in: 1 week
131     when: on_failure
132     paths:
133       - obj/
134
135 .Debian.cross.template: &Debian_cross_template
136   stage: test
137   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$DEBIAN_CROSS_BUILD
138   script:
139   - build=$(dpkg-architecture -qDEB_HOST_GNU_TYPE)
140   - host="${CI_JOB_NAME#*.cross.}"
141   - mkdir -p obj && cd obj && cmake
142     -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-Debian-mips.cmake
143     -DCMAKE_BUILD_TYPE=RelWithDebInfo
144     -DUNIT_TESTING=ON .. && make -j$(nproc) &&
145     ctest --output-on-failure
146   tags:
147   - shared
148   except:
149   - tags
150   artifacts:
151     expire_in: 1 week
152     when: on_failure
153     paths:
154       - obj/
155
156 Debian.cross.mips-linux-gnu:
157   <<: *Debian_cross_template
158
159 tumbleweed/x86_64/gcc:
160   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
161   script:
162   - mkdir -p obj && cd obj && cmake
163     -DCMAKE_BUILD_TYPE=RelWithDebInfo
164     -DPICKY_DEVELOPER=ON
165     -DUNIT_TESTING=ON .. &&
166     make -j$(nproc) && ctest --output-on-failure
167   tags:
168   - shared
169   except:
170   - tags
171   artifacts:
172     expire_in: 1 week
173     when: on_failure
174     paths:
175       - obj/
176
177 tumbleweed/x86_64/gcc7:
178   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
179   script:
180   - mkdir -p obj && cd obj && cmake
181     -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7
182     -DCMAKE_BUILD_TYPE=RelWithDebInfo
183     -DPICKY_DEVELOPER=ON
184     -DUNIT_TESTING=ON .. &&
185     make -j$(nproc) && ctest --output-on-failure
186   tags:
187   - shared
188   except:
189   - tags
190   artifacts:
191     expire_in: 1 week
192     when: on_failure
193     paths:
194       - obj/
195
196 tumbleweed/x86_64/clang:
197   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
198   script:
199   - mkdir -p obj && cd obj && cmake
200     -DCMAKE_BUILD_TYPE=RelWithDebInfo
201     -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
202     -DPICKY_DEVELOPER=ON
203     -DUNIT_TESTING=ON .. &&
204     make -j$(nproc) && ctest --output-on-failure
205   tags:
206   - shared
207   except:
208   - tags
209   artifacts:
210     expire_in: 1 week
211     when: on_failure
212     paths:
213       - obj/
214
215 tumbleweed/static-analysis:
216   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
217   script:
218   - export CCC_CC=clang
219   - export CCC_CXX=clang++
220   - mkdir -p obj && cd obj && scan-build cmake
221     -DCMAKE_BUILD_TYPE=Debug
222     -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
223     -DPICKY_DEVELOPER=ON
224     -DUNIT_TESTING=ON .. &&
225     scan-build --status-bugs -o scan make -j$(nproc)
226   tags:
227   - shared
228   except:
229   - tags
230   artifacts:
231     expire_in: 1 week
232     when: on_failure
233     paths:
234       - obj/scan