testing: tsan
[m6w6/libmemcached] / .github / workflows / cmake-build-ci.yml
1 # Generated file; do not edit!
2 name: cmake-build-ci
3 on:
4 push:
5 paths:
6 - "include/**"
7 - "src/**"
8 - "test/**"
9 - "CMake*"
10 - ".github/workflows/cmake-build-ci*"
11 branches-ignore:
12 - gh-pages
13 pull_request:
14 branches:
15 - master
16 - v1.x
17 env:
18 # defaults
19 INSTALL_MEMCACHED: memcached
20 CMAKE_BUILD_TYPE: Debug
21 BUILD_TESTING: "ON"
22 ENABLE_SASL: "OFF"
23 ENABLE_HASH_HSIEH: "ON"
24 ENABLE_DTRACE: "OFF"
25 VERBOSE: "ON"
26 OS_VND: Linux #
27 OS_VER: ubuntu-20.04 #
28 CC_VND: gnu #
29 CC_VER: cur #
30
31 jobs:
32
33 # new memcached
34 dbg-new:
35 name: dbg-new (ubuntu-20.04, gnu, cur)
36 runs-on: ubuntu-20.04 #
37 env:
38 INSTALL_MEMCACHED:
39 MEMCACHED_PREFIX: /tmp
40 ENABLE_SASL: "ON"
41 CFLAGS: "-O0 --coverage"
42 CXXFLAGS: "-O0 --coverage"
43 steps:
44 - uses: actions/checkout@v2
45 - uses: actions/checkout@v2
46 with:
47 repository: memcached/memcached
48 path: memcached
49 ref: 1.6.7
50 - name: Prepare environment (for cur gnu on ubuntu-20.04)
51 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
52 run: |
53 echo CC="gcc-9" >> ${GITHUB_ENV}
54 echo CXX="g++-9" >> ${GITHUB_ENV}
55 - name: Install dependencies (Linux)
56 if: runner.os == 'Linux'
57 run: |
58 sudo apt-get install \
59 libevent-dev \
60 libsasl2-dev \
61 libtbb-dev \
62 ${INSTALL_MEMCACHED} \
63 ${INSTALL_CC} ${INSTALL_CXX}
64 sudo systemctl stop memcached || true
65 - name: Install dependencies (Mac)
66 if: runner.os == 'macOS'
67 run: |
68 brew install bison flex ${INSTALL_MEMCACHED}
69 brew services stop memcached || true
70 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
71 - name: Build memcached
72 run: |
73 if test -d memcached
74 then
75 cd memcached
76 ./autogen.sh
77 ./configure CFLAGS="-O2 -pipe" \
78 --prefix=${MEMCACHED_PREFIX} \
79 --enable-sasl \
80 --enable-sasl-pwdb \
81 --disable-coverage \
82 --disable-dependency-tracking \
83 --disable-docs \
84 --disable-extstore \
85 --disable-option-checking \
86 ;
87 make -j2
88 make install
89 cd ..
90 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
91 fi
92 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
93 run: cmake -S . -B build
94 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
95 run: make -C build -j2 all
96 - name: Test
97 run: make -C build -j2 test
98 - name: Install
99 run: make -C build -j2 install DESTDIR=/tmp
100 - name: Failed tests log
101 if: ${{ failure() }}
102 run: cat build/Testing/Temporary/LastTest.log || true
103 - name: Notify Gitter (success)
104 if: ${{ success() }}
105 run: |
106 REF=$(basename ${GITHUB_REF})
107 curl -sS "${{ secrets.GITTER }}" \
108 --data-urlencode "level=info" \
109 --data-urlencode "message=Github [${GITHUB_REPOSITORY}](https://github.com/${GITHUB_REPOSITORY}/commits/${REF}) (${REF}) [success](https://github.com/m6w6/libmemcached/actions/runs/${GITHUB_RUN_ID}) (${ImageOS}/${CC:-${CC_VND}-${CC_VER}})"
110 - name: Notify Gitter (failure)
111 if: ${{ failure() }}
112 run: |
113 REF=$(basename ${GITHUB_REF})
114 curl -sS "${{ secrets.GITTER }}" \
115 --data-urlencode "level=error" \
116 --data-urlencode "message=Github [${GITHUB_REPOSITORY}](https://github.com/${GITHUB_REPOSITORY}/commits/${REF}) (${REF}) [failure](https://github.com/m6w6/libmemcached/actions/runs/${GITHUB_RUN_ID}) (${ImageOS}/${CC:-${CC_VND}-${CC_VER}})"
117 - uses: codecov/codecov-action@v1.0.13
118
119 # sanitizer build
120 dbg-san:
121 name: dbg-san (ubuntu-20.04, gnu, cur)
122 runs-on: ubuntu-20.04 #
123 env:
124 ENABLE_SANITIZERS: "address;undefined"
125 steps:
126 - uses: actions/checkout@v2
127 - name: Prepare environment (for cur gnu on ubuntu-20.04)
128 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
129 run: |
130 echo CC="gcc-9" >> ${GITHUB_ENV}
131 echo CXX="g++-9" >> ${GITHUB_ENV}
132 - name: Install dependencies (Linux)
133 if: runner.os == 'Linux'
134 run: |
135 sudo apt-get install \
136 libevent-dev \
137 libsasl2-dev \
138 libtbb-dev \
139 ${INSTALL_MEMCACHED} \
140 ${INSTALL_CC} ${INSTALL_CXX}
141 sudo systemctl stop memcached || true
142 - name: Install dependencies (Mac)
143 if: runner.os == 'macOS'
144 run: |
145 brew install bison flex ${INSTALL_MEMCACHED}
146 brew services stop memcached || true
147 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
148 - name: Build memcached
149 run: |
150 if test -d memcached
151 then
152 cd memcached
153 ./autogen.sh
154 ./configure CFLAGS="-O2 -pipe" \
155 --prefix=${MEMCACHED_PREFIX} \
156 --enable-sasl \
157 --enable-sasl-pwdb \
158 --disable-coverage \
159 --disable-dependency-tracking \
160 --disable-docs \
161 --disable-extstore \
162 --disable-option-checking \
163 ;
164 make -j2
165 make install
166 cd ..
167 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
168 fi
169 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
170 run: cmake -S . -B build
171 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
172 run: make -C build -j2 all
173 - name: Test
174 run: make -C build -j2 test
175 - name: Install
176 run: make -C build -j2 install DESTDIR=/tmp
177 - name: Failed tests log
178 if: ${{ failure() }}
179 run: cat build/Testing/Temporary/LastTest.log || true
180 - name: Notify Gitter (success)
181 if: ${{ success() }}
182 run: |
183 REF=$(basename ${GITHUB_REF})
184 curl -sS "${{ secrets.GITTER }}" \
185 --data-urlencode "level=info" \
186 --data-urlencode "message=Github [${GITHUB_REPOSITORY}](https://github.com/${GITHUB_REPOSITORY}/commits/${REF}) (${REF}) [success](https://github.com/m6w6/libmemcached/actions/runs/${GITHUB_RUN_ID}) (${ImageOS}/${CC:-${CC_VND}-${CC_VER}})"
187 - name: Notify Gitter (failure)
188 if: ${{ failure() }}
189 run: |
190 REF=$(basename ${GITHUB_REF})
191 curl -sS "${{ secrets.GITTER }}" \
192 --data-urlencode "level=error" \
193 --data-urlencode "message=Github [${GITHUB_REPOSITORY}](https://github.com/${GITHUB_REPOSITORY}/commits/${REF}) (${REF}) [failure](https://github.com/m6w6/libmemcached/actions/runs/${GITHUB_RUN_ID}) (${ImageOS}/${CC:-${CC_VND}-${CC_VER}})"
194
195 # thread sanitizer build
196 dbg-tsan:
197 name: dbg-tsan (ubuntu-20.04, gnu, cur)
198 runs-on: ubuntu-20.04 #
199 env:
200 ENABLE_SANITIZERS: "thread"
201 ENABLE_MEMASLAP: "OFF"
202 steps:
203 - uses: actions/checkout@v2
204 - name: Prepare environment (for cur gnu on ubuntu-20.04)
205 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
206 run: |
207 echo CC="gcc-9" >> ${GITHUB_ENV}
208 echo CXX="g++-9" >> ${GITHUB_ENV}
209 - name: Install dependencies (Linux)
210 if: runner.os == 'Linux'
211 run: |
212 sudo apt-get install \
213 libevent-dev \
214 libsasl2-dev \
215 libtbb-dev \
216 ${INSTALL_MEMCACHED} \
217 ${INSTALL_CC} ${INSTALL_CXX}
218 sudo systemctl stop memcached || true
219 - name: Install dependencies (Mac)
220 if: runner.os == 'macOS'
221 run: |
222 brew install bison flex ${INSTALL_MEMCACHED}
223 brew services stop memcached || true
224 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
225 - name: Build memcached
226 run: |
227 if test -d memcached
228 then
229 cd memcached
230 ./autogen.sh
231 ./configure CFLAGS="-O2 -pipe" \
232 --prefix=${MEMCACHED_PREFIX} \
233 --enable-sasl \
234 --enable-sasl-pwdb \
235 --disable-coverage \
236 --disable-dependency-tracking \
237 --disable-docs \
238 --disable-extstore \
239 --disable-option-checking \
240 ;
241 make -j2
242 make install
243 cd ..
244 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
245 fi
246 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
247 run: cmake -S . -B build
248 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
249 run: make -C build -j2 all
250 - name: Test
251 run: make -C build -j2 test
252 - name: Install
253 run: make -C build -j2 install DESTDIR=/tmp
254 - name: Failed tests log
255 if: ${{ failure() }}
256 run: cat build/Testing/Temporary/LastTest.log || true
257 - name: Notify Gitter (success)
258 if: ${{ success() }}
259 run: |
260 REF=$(basename ${GITHUB_REF})
261 curl -sS "${{ secrets.GITTER }}" \
262 --data-urlencode "level=info" \
263 --data-urlencode "message=Github [${GITHUB_REPOSITORY}](https://github.com/${GITHUB_REPOSITORY}/commits/${REF}) (${REF}) [success](https://github.com/m6w6/libmemcached/actions/runs/${GITHUB_RUN_ID}) (${ImageOS}/${CC:-${CC_VND}-${CC_VER}})"
264 - name: Notify Gitter (failure)
265 if: ${{ failure() }}
266 run: |
267 REF=$(basename ${GITHUB_REF})
268 curl -sS "${{ secrets.GITTER }}" \
269 --data-urlencode "level=error" \
270 --data-urlencode "message=Github [${GITHUB_REPOSITORY}](https://github.com/${GITHUB_REPOSITORY}/commits/${REF}) (${REF}) [failure](https://github.com/m6w6/libmemcached/actions/runs/${GITHUB_RUN_ID}) (${ImageOS}/${CC:-${CC_VND}-${CC_VER}})"
271
272 # mac build
273 dbg-mac:
274 name: dbg-mac (macos-10.15, clang, apple)
275 runs-on: macos-10.15 #
276 env:
277 CFLAGS: -O0 --coverage
278 CXXFLAGS: -O0 --coverage
279 OS_VND: macOS
280 OS_VER: macos-10.15 #
281 CC_VND: clang #
282 CC_VER: apple #
283 continue-on-error: true
284 steps:
285 - uses: actions/checkout@v2
286 - name: Install dependencies (Linux)
287 if: runner.os == 'Linux'
288 run: |
289 sudo apt-get install \
290 libevent-dev \
291 libsasl2-dev \
292 libtbb-dev \
293 ${INSTALL_MEMCACHED} \
294 ${INSTALL_CC} ${INSTALL_CXX}
295 sudo systemctl stop memcached || true
296 - name: Install dependencies (Mac)
297 if: runner.os == 'macOS'
298 run: |
299 brew install bison flex ${INSTALL_MEMCACHED}
300 brew services stop memcached || true
301 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
302 - name: Build memcached
303 run: |
304 if test -d memcached
305 then
306 cd memcached
307 ./autogen.sh
308 ./configure CFLAGS="-O2 -pipe" \
309 --prefix=${MEMCACHED_PREFIX} \
310 --enable-sasl \
311 --enable-sasl-pwdb \
312 --disable-coverage \
313 --disable-dependency-tracking \
314 --disable-docs \
315 --disable-extstore \
316 --disable-option-checking \
317 ;
318 make -j2
319 make install
320 cd ..
321 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
322 fi
323 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
324 run: cmake -S . -B build
325 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
326 run: make -C build -j2 all
327 - name: Test
328 run: make -C build -j2 test
329 - name: Install
330 run: make -C build -j2 install DESTDIR=/tmp
331 - name: Failed tests log
332 if: ${{ failure() }}
333 run: cat build/Testing/Temporary/LastTest.log || true
334 - name: Notify Gitter (success)
335 if: ${{ success() }}
336 run: |
337 REF=$(basename ${GITHUB_REF})
338 curl -sS "${{ secrets.GITTER }}" \
339 --data-urlencode "level=info" \
340 --data-urlencode "message=Github [${GITHUB_REPOSITORY}](https://github.com/${GITHUB_REPOSITORY}/commits/${REF}) (${REF}) [success](https://github.com/m6w6/libmemcached/actions/runs/${GITHUB_RUN_ID}) (${ImageOS}/${CC:-${CC_VND}-${CC_VER}})"
341 - name: Notify Gitter (failure)
342 if: ${{ failure() }}
343 run: |
344 REF=$(basename ${GITHUB_REF})
345 curl -sS "${{ secrets.GITTER }}" \
346 --data-urlencode "level=error" \
347 --data-urlencode "message=Github [${GITHUB_REPOSITORY}](https://github.com/${GITHUB_REPOSITORY}/commits/${REF}) (${REF}) [failure](https://github.com/m6w6/libmemcached/actions/runs/${GITHUB_RUN_ID}) (${ImageOS}/${CC:-${CC_VND}-${CC_VER}})"
348 - uses: codecov/codecov-action@v1.0.13
349
350 # release builds
351 release:
352 strategy:
353 fail-fast: false
354 matrix:
355 os_ver: [ubuntu-20.04, ubuntu-18.04]
356 cc_vnd: [gnu, clang]
357 cc_ver: [new, cur, old]
358 runs-on: ${{ matrix.os_ver }}
359 continue-on-error: ${{ matrix.cc_vnd == 'clang' }}
360 env:
361 CMAKE_BUILD_TYPE: Release
362 OS_VND: Linux
363 OS_VER: ${{ matrix.os_ver }}
364 CC_VND: ${{ matrix.cc_vnd }}
365 CC_VER: ${{ matrix.cc_ver }}
366 steps:
367 - uses: actions/checkout@v2
368 - name: Prepare environment (for new gnu on ubuntu-20.04)
369 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
370 run: |
371 echo CC="gcc-10" >> ${GITHUB_ENV}
372 echo CXX="g++-10" >> ${GITHUB_ENV}
373 echo INSTALL_CC="gcc-10" >> ${GITHUB_ENV}
374 echo INSTALL_CXX="g++-10" >> ${GITHUB_ENV}
375 - name: Prepare environment (for cur gnu on ubuntu-20.04)
376 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
377 run: |
378 echo CC="gcc-9" >> ${GITHUB_ENV}
379 echo CXX="g++-9" >> ${GITHUB_ENV}
380 - name: Prepare environment (for old gnu on ubuntu-20.04)
381 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
382 run: |
383 echo CC="gcc-8" >> ${GITHUB_ENV}
384 echo CXX="g++-8" >> ${GITHUB_ENV}
385 - name: Prepare environment (for new clang on ubuntu-20.04)
386 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
387 run: |
388 echo CC="clang-10" >> ${GITHUB_ENV}
389 echo CXX="clang++-10" >> ${GITHUB_ENV}
390 - name: Prepare environment (for cur clang on ubuntu-20.04)
391 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
392 run: |
393 echo CC="clang-9" >> ${GITHUB_ENV}
394 echo CXX="clang++-9" >> ${GITHUB_ENV}
395 - name: Prepare environment (for old clang on ubuntu-20.04)
396 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='old')
397 run: |
398 echo CC="clang-8" >> ${GITHUB_ENV}
399 echo CXX="clang++-8" >> ${GITHUB_ENV}
400 - name: Prepare environment (for new gnu on ubuntu-18.04)
401 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
402 run: |
403 echo CC="gcc-9" >> ${GITHUB_ENV}
404 echo CXX="g++-9" >> ${GITHUB_ENV}
405 - name: Prepare environment (for cur gnu on ubuntu-18.04)
406 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
407 run: |
408 echo CC="gcc-8" >> ${GITHUB_ENV}
409 echo CXX="g++-8" >> ${GITHUB_ENV}
410 - name: Prepare environment (for old gnu on ubuntu-18.04)
411 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
412 run: |
413 echo CC="gcc-7" >> ${GITHUB_ENV}
414 echo CXX="g++-7" >> ${GITHUB_ENV}
415 - name: Prepare environment (for new clang on ubuntu-18.04)
416 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
417 run: |
418 echo CC="clang-9" >> ${GITHUB_ENV}
419 echo CXX="clang++-9" >> ${GITHUB_ENV}
420 - name: Prepare environment (for cur clang on ubuntu-18.04)
421 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
422 run: |
423 echo CC="clang-8" >> ${GITHUB_ENV}
424 echo CXX="clang++-8" >> ${GITHUB_ENV}
425 - name: Prepare environment (for old clang on ubuntu-18.04)
426 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='old')
427 run: |
428 echo CC="clang-6.0" >> ${GITHUB_ENV}
429 echo CXX="clang++-6.0" >> ${GITHUB_ENV}
430 echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
431 - name: Install dependencies (Linux)
432 if: runner.os == 'Linux'
433 run: |
434 sudo apt-get install \
435 libevent-dev \
436 libsasl2-dev \
437 libtbb-dev \
438 ${INSTALL_MEMCACHED} \
439 ${INSTALL_CC} ${INSTALL_CXX}
440 sudo systemctl stop memcached || true
441 - name: Install dependencies (Mac)
442 if: runner.os == 'macOS'
443 run: |
444 brew install bison flex ${INSTALL_MEMCACHED}
445 brew services stop memcached || true
446 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
447 - name: Build memcached
448 run: |
449 if test -d memcached
450 then
451 cd memcached
452 ./autogen.sh
453 ./configure CFLAGS="-O2 -pipe" \
454 --prefix=${MEMCACHED_PREFIX} \
455 --enable-sasl \
456 --enable-sasl-pwdb \
457 --disable-coverage \
458 --disable-dependency-tracking \
459 --disable-docs \
460 --disable-extstore \
461 --disable-option-checking \
462 ;
463 make -j2
464 make install
465 cd ..
466 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
467 fi
468 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
469 run: cmake -S . -B build
470 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
471 run: make -C build -j2 all
472 - name: Test
473 run: make -C build -j2 test
474 - name: Install
475 run: make -C build -j2 install DESTDIR=/tmp
476 - name: Failed tests log
477 if: ${{ failure() }}
478 run: cat build/Testing/Temporary/LastTest.log || true
479 - name: Notify Gitter (success)
480 if: ${{ success() }}
481 run: |
482 REF=$(basename ${GITHUB_REF})
483 curl -sS "${{ secrets.GITTER }}" \
484 --data-urlencode "level=info" \
485 --data-urlencode "message=Github [${GITHUB_REPOSITORY}](https://github.com/${GITHUB_REPOSITORY}/commits/${REF}) (${REF}) [success](https://github.com/m6w6/libmemcached/actions/runs/${GITHUB_RUN_ID}) (${ImageOS}/${CC:-${CC_VND}-${CC_VER}})"
486 - name: Notify Gitter (failure)
487 if: ${{ failure() }}
488 run: |
489 REF=$(basename ${GITHUB_REF})
490 curl -sS "${{ secrets.GITTER }}" \
491 --data-urlencode "level=error" \
492 --data-urlencode "message=Github [${GITHUB_REPOSITORY}](https://github.com/${GITHUB_REPOSITORY}/commits/${REF}) (${REF}) [failure](https://github.com/m6w6/libmemcached/actions/runs/${GITHUB_RUN_ID}) (${ImageOS}/${CC:-${CC_VND}-${CC_VER}})"