pwrap: Fix PAM_WRAPPER_DISABLE_DEEPBIND environment variable
[pam_wrapper.git] / .gitlab-ci.yml
1 ---
2 variables:
3   GIT_DEPTH: 3
4   BUILD_IMAGES_PROJECT: cmocka/gitlab-build-images
5   FEDORA_BUILD: buildenv-fedora
6   CENTOS7_BUILD: buildenv-centos7
7   TUMBLEWEED_BUILD: buildenv-tumbleweed
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_INSTALL_PREFIX=/tmp/local
40       -DCMAKE_BUILD_TYPE=RelWithDebInfo
41       -DPICKY_DEVELOPER=ON
42       -DUNIT_TESTING=ON .. &&
43       make -j$(nproc) && ctest --output-on-failure && make install
44   tags:
45     - shared
46   except:
47     - tags
48   artifacts:
49     expire_in: 1 week
50     when: on_failure
51     paths:
52       - obj/
53
54 fedora/address-sanitizer:
55   stage: build
56   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
57   script:
58     - mkdir -p obj && cd obj && cmake
59       -DCMAKE_BUILD_TYPE=AddressSanitizer
60       -DPICKY_DEVELOPER=ON
61       -DUNIT_TESTING=ON .. &&
62       make -j$(nproc) && ctest --output-on-failure
63   tags:
64     - shared
65   except:
66     - tags
67   artifacts:
68     expire_in: 1 week
69     when: on_failure
70     paths:
71       - obj/
72
73 fedora/undefined-sanitizer:
74   stage: analysis
75   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
76   script:
77     - mkdir -p obj && cd obj && cmake
78       -DCMAKE_BUILD_TYPE=UndefinedSanitizer
79       -DPICKY_DEVELOPER=ON
80       -DUNIT_TESTING=ON ..
81       && make -j$(nproc) && ctest --output-on-failure
82   tags:
83     - shared
84   except:
85     - tags
86   artifacts:
87     expire_in: 1 week
88     when: on_failure
89     paths:
90       - obj/
91
92 fedora/csbuild:
93   stage: analysis
94   variables:
95     GIT_DEPTH: 20
96   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
97   script:
98     - |
99       if [[ -z "$CI_COMMIT_BEFORE_SHA" ]]; then
100           export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~15")
101       fi
102
103       # Check if the commit exists in this branch
104       # This is not the case for a force push
105       git branch --contains $CI_COMMIT_BEFORE_SHA 2>/dev/null || export CI_COMMIT_BEFORE_SHA=$(git rev-parse "${CI_COMMIT_SHA}~15")
106
107       export CI_COMMIT_RANGE="$CI_COMMIT_BEFORE_SHA..$CI_COMMIT_SHA"
108
109     - csbuild
110       --build-dir=obj-csbuild
111       --prep-cmd="cmake -DCMAKE_BUILD_TYPE=Debug -DPICKY_DEVELOPER=ON -DUNIT_TESTING=ON @SRCDIR@"
112       --build-cmd "make clean && make -j$(nproc)"
113       --git-commit-range $CI_COMMIT_RANGE
114       --color
115       --print-current --print-fixed
116   tags:
117     - shared
118   except:
119     - tags
120   artifacts:
121     expire_in: 1 week
122     when: on_failure
123     paths:
124       - obj-csbuild/
125
126 freebsd/x86_64:
127   stage: test
128   image:
129   script:
130     - mkdir -p obj-freebsd && cd obj-freebsd && cmake
131       -DCMAKE_BUILD_TYPE=RelWithDebInfo
132       -DPICKY_DEVELOPER=ON
133       -DUNIT_TESTING=ON .. &&
134       make && ctest --output-on-failure
135   tags:
136     - freebsd
137   except:
138     - tags
139   only:
140     - branches@cwrap/pam_wrapper
141     - branches@cryptomilk/pam_wrapper
142   artifacts:
143     expire_in: 1 week
144     when: on_failure
145     paths:
146       - obj-freebsd/
147   # pam_wrapper stopped to work with the latest OpenPAM version, this is a
148   # bigger effort to investigate.
149   allow_failure: true
150
151 tumbleweed/x86_64/gcc:
152   stage: test
153   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
154   script:
155     - mkdir -p obj && cd obj && cmake
156       -DCMAKE_BUILD_TYPE=RelWithDebInfo
157       -DPICKY_DEVELOPER=ON
158       -DUNIT_TESTING=ON .. &&
159       make -j$(nproc) && ctest --output-on-failure
160   tags:
161     - shared
162   except:
163     - tags
164   artifacts:
165     expire_in: 1 week
166     when: on_failure
167     paths:
168       - obj/
169
170 tumbleweed/x86_64/gcc7:
171   stage: test
172   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$TUMBLEWEED_BUILD
173   script:
174     - mkdir -p obj && cd obj && cmake
175       -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7
176       -DCMAKE_BUILD_TYPE=RelWithDebInfo
177       -DPICKY_DEVELOPER=ON
178       -DUNIT_TESTING=ON .. &&
179       make -j$(nproc) && ctest --output-on-failure
180   tags:
181     - shared
182   except:
183     - tags
184   artifacts:
185     expire_in: 1 week
186     when: on_failure
187     paths:
188       - obj/
189
190 # PICKY_DEVELOPER IS OFF
191 # => https://github.com/python/cpython/pull/19133
192 tumbleweed/x86_64/clang:
193   stage: test
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=OFF
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 # PICKY_DEVELOPER IS OFF
213 # => https://github.com/python/cpython/pull/19133
214 tumbleweed/static-analysis:
215   stage: 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=OFF
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
235
236 ubuntu/x86_64:
237   stage: test
238   image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$UBUNTU_BUILD
239   script:
240     - mkdir -p obj && cd obj && cmake
241       -DCMAKE_BUILD_TYPE=RelWithDebInfo
242       -DPICKY_DEVELOPER=ON
243       -DUNIT_TESTING=ON .. &&
244       make -j$(nproc) && ctest --output-on-failure
245   tags:
246     - shared
247   except:
248     - tags
249   artifacts:
250     expire_in: 1 week
251     when: on_failure
252     paths:
253       - obj/