cpack: artifacts
[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 ENABLE_SASL: "ON"
21 ENABLE_HASH_HSIEH: "ON"
22 ENABLE_DTRACE: "OFF"
23 OS_VND: Linux #
24 OS_VER: ubuntu-20.04 #
25 CC_VND: gnu #
26 CC_VER: cur #
27
28 jobs:
29
30 # new memcached
31 dbg-new:
32 name: dbg-new (ubuntu-20.04, gnu, cur)
33 runs-on: ubuntu-20.04 #
34 env:
35 CMAKE_BUILD_TYPE: "Debug"
36 BUILD_TESTING: "ON"
37 VERBOSE: "ON"
38 CFLAGS: "-O0 --coverage"
39 CXXFLAGS: "-O0 --coverage"
40 INSTALL_MEMCACHED: ""
41 MEMCACHED_PREFIX: "/tmp"
42 steps:
43 - uses: actions/checkout@v2
44 - uses: actions/checkout@v2
45 with:
46 repository: memcached/memcached
47 path: memcached
48 ref: 1.6.7
49 - name: Prepare environment (for cur gnu on ubuntu-20.04)
50 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
51 run: |
52 echo CC="gcc-9" >> ${GITHUB_ENV}
53 echo CXX="g++-9" >> ${GITHUB_ENV}
54 - name: Install dependencies (Linux)
55 if: runner.os == 'Linux'
56 run: |
57 sudo apt-get install \
58 libevent-dev \
59 libsasl2-dev \
60 libtbb-dev \
61 python3-m2r \
62 python3-sphinx \
63 ${INSTALL_MEMCACHED} \
64 ${INSTALL_CC} ${INSTALL_CXX}
65 sudo systemctl stop memcached || true
66 - name: Install dependencies (Mac)
67 if: runner.os == 'macOS'
68 run: |
69 brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
70 brew services stop memcached || true
71 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
72 - name: Build memcached
73 run: |
74 if test -d memcached
75 then
76 cd memcached
77 ./autogen.sh
78 ./configure CFLAGS="-O2 -pipe" \
79 --prefix=${MEMCACHED_PREFIX} \
80 --enable-sasl \
81 --enable-sasl-pwdb \
82 --disable-coverage \
83 --disable-dependency-tracking \
84 --disable-docs \
85 --disable-extstore \
86 --disable-option-checking \
87 ;
88 make -j2
89 make install
90 cd ..
91 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
92 fi
93 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
94 run: cmake -S . -B build
95 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
96 run: cmake --build build -j2
97 - name: Test
98 run: cmake --build build -j2 --target test
99 - name: Install
100 run: cmake --build build -j2 --target install -- DESTDIR=/tmp
101 - name: Failed tests log
102 if: ${{ failure() }}
103 run: cat build/Testing/Temporary/LastTest.log || true
104 - name: Package
105 env:
106 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
107 if: env.OS_VND!='Windows' && env.CC_VER=='cur' && env.CMAKE_BUILD_TYPE=='Release'
108 run: |
109 cmake -DENABLE_SASL=ON -DBUILD_DOCS_MANGZ=ON -S . -B build
110 cmake --build build -j2 --target package -- VERBOSE=
111 cmake -DCPACK_COMPONENT_INSTALL=ON build
112 cmake --build build -j2 --target package -- VERBOSE=
113 cmake --build build -j2 --target push-artifacts -- VERBOSE=
114 - name: Notify Gitter (success)
115 if: ${{ success() }}
116 run: |
117 REF=$(basename ${GITHUB_REF})
118 curl -sS "${{ secrets.GITTER }}" \
119 --data-urlencode "level=info" \
120 --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}})"
121 - name: Notify Gitter (failure)
122 if: ${{ failure() }}
123 run: |
124 REF=$(basename ${GITHUB_REF})
125 curl -sS "${{ secrets.GITTER }}" \
126 --data-urlencode "level=error" \
127 --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}})"
128 - uses: codecov/codecov-action@v1.0.13
129
130 # sanitizer build
131 dbg-san:
132 name: dbg-san (ubuntu-20.04, gnu, cur)
133 runs-on: ubuntu-20.04 #
134 env:
135 CMAKE_BUILD_TYPE: "Debug"
136 BUILD_TESTING: "ON"
137 VERBOSE: "ON"
138 ENABLE_SANITIZERS: "address;undefined"
139 steps:
140 - uses: actions/checkout@v2
141 - name: Prepare environment (for cur gnu on ubuntu-20.04)
142 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
143 run: |
144 echo CC="gcc-9" >> ${GITHUB_ENV}
145 echo CXX="g++-9" >> ${GITHUB_ENV}
146 - name: Install dependencies (Linux)
147 if: runner.os == 'Linux'
148 run: |
149 sudo apt-get install \
150 libevent-dev \
151 libsasl2-dev \
152 libtbb-dev \
153 python3-m2r \
154 python3-sphinx \
155 ${INSTALL_MEMCACHED} \
156 ${INSTALL_CC} ${INSTALL_CXX}
157 sudo systemctl stop memcached || true
158 - name: Install dependencies (Mac)
159 if: runner.os == 'macOS'
160 run: |
161 brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
162 brew services stop memcached || true
163 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
164 - name: Build memcached
165 run: |
166 if test -d memcached
167 then
168 cd memcached
169 ./autogen.sh
170 ./configure CFLAGS="-O2 -pipe" \
171 --prefix=${MEMCACHED_PREFIX} \
172 --enable-sasl \
173 --enable-sasl-pwdb \
174 --disable-coverage \
175 --disable-dependency-tracking \
176 --disable-docs \
177 --disable-extstore \
178 --disable-option-checking \
179 ;
180 make -j2
181 make install
182 cd ..
183 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
184 fi
185 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
186 run: cmake -S . -B build
187 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
188 run: cmake --build build -j2
189 - name: Test
190 run: cmake --build build -j2 --target test
191 - name: Install
192 run: cmake --build build -j2 --target install -- DESTDIR=/tmp
193 - name: Failed tests log
194 if: ${{ failure() }}
195 run: cat build/Testing/Temporary/LastTest.log || true
196 - name: Package
197 env:
198 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
199 if: env.OS_VND!='Windows' && env.CC_VER=='cur' && env.CMAKE_BUILD_TYPE=='Release'
200 run: |
201 cmake -DENABLE_SASL=ON -DBUILD_DOCS_MANGZ=ON -S . -B build
202 cmake --build build -j2 --target package -- VERBOSE=
203 cmake -DCPACK_COMPONENT_INSTALL=ON build
204 cmake --build build -j2 --target package -- VERBOSE=
205 cmake --build build -j2 --target push-artifacts -- VERBOSE=
206 - name: Notify Gitter (success)
207 if: ${{ success() }}
208 run: |
209 REF=$(basename ${GITHUB_REF})
210 curl -sS "${{ secrets.GITTER }}" \
211 --data-urlencode "level=info" \
212 --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}})"
213 - name: Notify Gitter (failure)
214 if: ${{ failure() }}
215 run: |
216 REF=$(basename ${GITHUB_REF})
217 curl -sS "${{ secrets.GITTER }}" \
218 --data-urlencode "level=error" \
219 --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}})"
220
221 # thread sanitizer build
222 dbg-tsan:
223 name: dbg-tsan (ubuntu-20.04, gnu, cur)
224 runs-on: ubuntu-20.04 #
225 env:
226 CMAKE_BUILD_TYPE: "Debug"
227 BUILD_TESTING: "ON"
228 VERBOSE: "ON"
229 ENABLE_SANITIZERS: "thread"
230 steps:
231 - uses: actions/checkout@v2
232 - name: Prepare environment (for cur gnu on ubuntu-20.04)
233 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
234 run: |
235 echo CC="gcc-9" >> ${GITHUB_ENV}
236 echo CXX="g++-9" >> ${GITHUB_ENV}
237 - name: Install dependencies (Linux)
238 if: runner.os == 'Linux'
239 run: |
240 sudo apt-get install \
241 libevent-dev \
242 libsasl2-dev \
243 libtbb-dev \
244 python3-m2r \
245 python3-sphinx \
246 ${INSTALL_MEMCACHED} \
247 ${INSTALL_CC} ${INSTALL_CXX}
248 sudo systemctl stop memcached || true
249 - name: Install dependencies (Mac)
250 if: runner.os == 'macOS'
251 run: |
252 brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
253 brew services stop memcached || true
254 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
255 - name: Build memcached
256 run: |
257 if test -d memcached
258 then
259 cd memcached
260 ./autogen.sh
261 ./configure CFLAGS="-O2 -pipe" \
262 --prefix=${MEMCACHED_PREFIX} \
263 --enable-sasl \
264 --enable-sasl-pwdb \
265 --disable-coverage \
266 --disable-dependency-tracking \
267 --disable-docs \
268 --disable-extstore \
269 --disable-option-checking \
270 ;
271 make -j2
272 make install
273 cd ..
274 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
275 fi
276 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
277 run: cmake -S . -B build
278 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
279 run: cmake --build build -j2
280 - name: Test
281 run: cmake --build build -j2 --target test
282 - name: Install
283 run: cmake --build build -j2 --target install -- DESTDIR=/tmp
284 - name: Failed tests log
285 if: ${{ failure() }}
286 run: cat build/Testing/Temporary/LastTest.log || true
287 - name: Package
288 env:
289 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
290 if: env.OS_VND!='Windows' && env.CC_VER=='cur' && env.CMAKE_BUILD_TYPE=='Release'
291 run: |
292 cmake -DENABLE_SASL=ON -DBUILD_DOCS_MANGZ=ON -S . -B build
293 cmake --build build -j2 --target package -- VERBOSE=
294 cmake -DCPACK_COMPONENT_INSTALL=ON build
295 cmake --build build -j2 --target package -- VERBOSE=
296 cmake --build build -j2 --target push-artifacts -- VERBOSE=
297 - name: Notify Gitter (success)
298 if: ${{ success() }}
299 run: |
300 REF=$(basename ${GITHUB_REF})
301 curl -sS "${{ secrets.GITTER }}" \
302 --data-urlencode "level=info" \
303 --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}})"
304 - name: Notify Gitter (failure)
305 if: ${{ failure() }}
306 run: |
307 REF=$(basename ${GITHUB_REF})
308 curl -sS "${{ secrets.GITTER }}" \
309 --data-urlencode "level=error" \
310 --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}})"
311
312 # mac debug
313 dbg-mac:
314 name: dbg-mac (macos-10.15, clang, cur)
315 runs-on: macos-10.15 #
316 env:
317 CMAKE_BUILD_TYPE: "Debug"
318 ENABLE_SASL: "OFF"
319 BUILD_TESTING: "ON"
320 VERBOSE: "ON"
321 CFLAGS: "-O0 --coverage"
322 CXXFLAGS: "-O0 --coverage"
323 OS_VND: macOS #
324 OS_VER: macos-10.15 #
325 CC_VND: clang #
326 CC_VER: cur #
327 #
328 continue-on-error: true
329 steps:
330 - uses: actions/checkout@v2
331 - name: Install dependencies (Linux)
332 if: runner.os == 'Linux'
333 run: |
334 sudo apt-get install \
335 libevent-dev \
336 libsasl2-dev \
337 libtbb-dev \
338 python3-m2r \
339 python3-sphinx \
340 ${INSTALL_MEMCACHED} \
341 ${INSTALL_CC} ${INSTALL_CXX}
342 sudo systemctl stop memcached || true
343 - name: Install dependencies (Mac)
344 if: runner.os == 'macOS'
345 run: |
346 brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
347 brew services stop memcached || true
348 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
349 - name: Build memcached
350 run: |
351 if test -d memcached
352 then
353 cd memcached
354 ./autogen.sh
355 ./configure CFLAGS="-O2 -pipe" \
356 --prefix=${MEMCACHED_PREFIX} \
357 --enable-sasl \
358 --enable-sasl-pwdb \
359 --disable-coverage \
360 --disable-dependency-tracking \
361 --disable-docs \
362 --disable-extstore \
363 --disable-option-checking \
364 ;
365 make -j2
366 make install
367 cd ..
368 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
369 fi
370 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
371 run: cmake -S . -B build
372 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
373 run: cmake --build build -j2
374 - name: Test
375 run: cmake --build build -j2 --target test
376 - name: Install
377 run: cmake --build build -j2 --target install -- DESTDIR=/tmp
378 - name: Failed tests log
379 if: ${{ failure() }}
380 run: cat build/Testing/Temporary/LastTest.log || true
381 - name: Package
382 env:
383 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
384 if: env.OS_VND!='Windows' && env.CC_VER=='cur' && env.CMAKE_BUILD_TYPE=='Release'
385 run: |
386 cmake -DENABLE_SASL=ON -DBUILD_DOCS_MANGZ=ON -S . -B build
387 cmake --build build -j2 --target package -- VERBOSE=
388 cmake -DCPACK_COMPONENT_INSTALL=ON build
389 cmake --build build -j2 --target package -- VERBOSE=
390 cmake --build build -j2 --target push-artifacts -- VERBOSE=
391 - name: Notify Gitter (success)
392 if: ${{ success() }}
393 run: |
394 REF=$(basename ${GITHUB_REF})
395 curl -sS "${{ secrets.GITTER }}" \
396 --data-urlencode "level=info" \
397 --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}})"
398 - name: Notify Gitter (failure)
399 if: ${{ failure() }}
400 run: |
401 REF=$(basename ${GITHUB_REF})
402 curl -sS "${{ secrets.GITTER }}" \
403 --data-urlencode "level=error" \
404 --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}})"
405 - uses: codecov/codecov-action@v1.0.13
406
407 # mac release
408 rel-mac:
409 name: rel-mac (macos-10.15, clang, cur)
410 runs-on: macos-10.15 #
411 env:
412 ENABLE_SASL: "OFF"
413 BUILD_DOCS_MANGZ: "ON"
414 OS_VND: macOS #
415 OS_VER: macos-10.15 #
416 CC_VND: clang #
417 CC_VER: cur #
418 continue-on-error: true
419 steps:
420 - uses: actions/checkout@v2
421 - name: Install dependencies (Linux)
422 if: runner.os == 'Linux'
423 run: |
424 sudo apt-get install \
425 libevent-dev \
426 libsasl2-dev \
427 libtbb-dev \
428 python3-m2r \
429 python3-sphinx \
430 ${INSTALL_MEMCACHED} \
431 ${INSTALL_CC} ${INSTALL_CXX}
432 sudo systemctl stop memcached || true
433 - name: Install dependencies (Mac)
434 if: runner.os == 'macOS'
435 run: |
436 brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
437 brew services stop memcached || true
438 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
439 - name: Build memcached
440 run: |
441 if test -d memcached
442 then
443 cd memcached
444 ./autogen.sh
445 ./configure CFLAGS="-O2 -pipe" \
446 --prefix=${MEMCACHED_PREFIX} \
447 --enable-sasl \
448 --enable-sasl-pwdb \
449 --disable-coverage \
450 --disable-dependency-tracking \
451 --disable-docs \
452 --disable-extstore \
453 --disable-option-checking \
454 ;
455 make -j2
456 make install
457 cd ..
458 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
459 fi
460 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
461 run: cmake -S . -B build
462 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
463 run: cmake --build build -j2
464 - name: Test
465 run: cmake --build build -j2 --target test
466 - name: Install
467 run: cmake --build build -j2 --target install -- DESTDIR=/tmp
468 - name: Failed tests log
469 if: ${{ failure() }}
470 run: cat build/Testing/Temporary/LastTest.log || true
471 - name: Package
472 env:
473 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
474 if: env.OS_VND!='Windows' && env.CC_VER=='cur' && env.CMAKE_BUILD_TYPE=='Release'
475 run: |
476 cmake -DENABLE_SASL=ON -DBUILD_DOCS_MANGZ=ON -S . -B build
477 cmake --build build -j2 --target package -- VERBOSE=
478 cmake -DCPACK_COMPONENT_INSTALL=ON build
479 cmake --build build -j2 --target package -- VERBOSE=
480 cmake --build build -j2 --target push-artifacts -- VERBOSE=
481 - name: Notify Gitter (success)
482 if: ${{ success() }}
483 run: |
484 REF=$(basename ${GITHUB_REF})
485 curl -sS "${{ secrets.GITTER }}" \
486 --data-urlencode "level=info" \
487 --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}})"
488 - name: Notify Gitter (failure)
489 if: ${{ failure() }}
490 run: |
491 REF=$(basename ${GITHUB_REF})
492 curl -sS "${{ secrets.GITTER }}" \
493 --data-urlencode "level=error" \
494 --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}})"
495
496 # win build
497 win-msvc:
498 name: win-msvc (windows-2019, msvc, cur)
499 runs-on: windows-2019 #
500 env:
501 ENABLE_SASL: "OFF"
502 BISON_ROOT: "C:/msys64/usr"
503 FLEX_ROOT: "C:/msys64/usr"
504 OS_VND: Windows #
505 OS_VER: windows-2019 #
506 CC_VND: msvc #
507 CC_VER: cur #
508 continue-on-error: true
509 defaults:
510 run:
511 shell: msys2 {0}
512 steps:
513 - uses: actions/checkout@v2
514 - uses: msys2/setup-msys2@v2
515 with:
516 release: false
517 path-type: inherit
518 install: >-
519 rsync
520 openssh
521 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
522 run: cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
523 - name: Build all with ${{ env.CC_VND }}
524 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }}
525 - name: Install
526 run: cmake --install build --prefix installed --config ${{ env.CMAKE_BUILD_TYPE }}
527 - name: Package
528 env:
529 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
530 run: |
531 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} --target package
532 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} --target push-artifacts
533
534 # release builds
535 release:
536 strategy:
537 fail-fast: false
538 matrix:
539 os_ver: [ubuntu-20.04, ubuntu-18.04]
540 cc_vnd: [gnu, clang]
541 cc_ver: [new, cur, old]
542 runs-on: ${{ matrix.os_ver }}
543 continue-on-error: ${{ matrix.cc_vnd == 'clang' }}
544 env:
545 BUILD_DOCS_MANGZ: "ON"
546 OS_VND: Linux
547 OS_VER: ${{ matrix.os_ver }}
548 CC_VND: ${{ matrix.cc_vnd }}
549 CC_VER: ${{ matrix.cc_ver }}
550 steps:
551 - uses: actions/checkout@v2
552 - name: Prepare environment (for new gnu on ubuntu-20.04)
553 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
554 run: |
555 echo CC="gcc-10" >> ${GITHUB_ENV}
556 echo CXX="g++-10" >> ${GITHUB_ENV}
557 echo INSTALL_CC="gcc-10" >> ${GITHUB_ENV}
558 echo INSTALL_CXX="g++-10" >> ${GITHUB_ENV}
559 - name: Prepare environment (for cur gnu on ubuntu-20.04)
560 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
561 run: |
562 echo CC="gcc-9" >> ${GITHUB_ENV}
563 echo CXX="g++-9" >> ${GITHUB_ENV}
564 - name: Prepare environment (for old gnu on ubuntu-20.04)
565 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
566 run: |
567 echo CC="gcc-8" >> ${GITHUB_ENV}
568 echo CXX="g++-8" >> ${GITHUB_ENV}
569 - name: Prepare environment (for new clang on ubuntu-20.04)
570 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
571 run: |
572 echo CC="clang-10" >> ${GITHUB_ENV}
573 echo CXX="clang++-10" >> ${GITHUB_ENV}
574 - name: Prepare environment (for cur clang on ubuntu-20.04)
575 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
576 run: |
577 echo CC="clang-9" >> ${GITHUB_ENV}
578 echo CXX="clang++-9" >> ${GITHUB_ENV}
579 - name: Prepare environment (for old clang on ubuntu-20.04)
580 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='old')
581 run: |
582 echo CC="clang-8" >> ${GITHUB_ENV}
583 echo CXX="clang++-8" >> ${GITHUB_ENV}
584 - name: Prepare environment (for new gnu on ubuntu-18.04)
585 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
586 run: |
587 echo CC="gcc-9" >> ${GITHUB_ENV}
588 echo CXX="g++-9" >> ${GITHUB_ENV}
589 - name: Prepare environment (for cur gnu on ubuntu-18.04)
590 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
591 run: |
592 echo CC="gcc-8" >> ${GITHUB_ENV}
593 echo CXX="g++-8" >> ${GITHUB_ENV}
594 - name: Prepare environment (for old gnu on ubuntu-18.04)
595 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
596 run: |
597 echo CC="gcc-7" >> ${GITHUB_ENV}
598 echo CXX="g++-7" >> ${GITHUB_ENV}
599 - name: Prepare environment (for new clang on ubuntu-18.04)
600 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
601 run: |
602 echo CC="clang-9" >> ${GITHUB_ENV}
603 echo CXX="clang++-9" >> ${GITHUB_ENV}
604 - name: Prepare environment (for cur clang on ubuntu-18.04)
605 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
606 run: |
607 echo CC="clang-8" >> ${GITHUB_ENV}
608 echo CXX="clang++-8" >> ${GITHUB_ENV}
609 - name: Prepare environment (for old clang on ubuntu-18.04)
610 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='old')
611 run: |
612 echo CC="clang-6.0" >> ${GITHUB_ENV}
613 echo CXX="clang++-6.0" >> ${GITHUB_ENV}
614 echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
615 - name: Prepare environment (for cur msvc on windows-2019)
616 if: (env.OS_VER=='windows-2019') && (env.CC_VND=='msvc') && (env.CC_VER=='cur')
617 run: |
618 echo CC="msvc2019" >> ${GITHUB_ENV}
619 echo CXX="msvc2019" >> ${GITHUB_ENV}
620 - name: Install dependencies (Linux)
621 if: runner.os == 'Linux'
622 run: |
623 sudo apt-get install \
624 libevent-dev \
625 libsasl2-dev \
626 libtbb-dev \
627 python3-m2r \
628 python3-sphinx \
629 ${INSTALL_MEMCACHED} \
630 ${INSTALL_CC} ${INSTALL_CXX}
631 sudo systemctl stop memcached || true
632 - name: Install dependencies (Mac)
633 if: runner.os == 'macOS'
634 run: |
635 brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
636 brew services stop memcached || true
637 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
638 - name: Build memcached
639 run: |
640 if test -d memcached
641 then
642 cd memcached
643 ./autogen.sh
644 ./configure CFLAGS="-O2 -pipe" \
645 --prefix=${MEMCACHED_PREFIX} \
646 --enable-sasl \
647 --enable-sasl-pwdb \
648 --disable-coverage \
649 --disable-dependency-tracking \
650 --disable-docs \
651 --disable-extstore \
652 --disable-option-checking \
653 ;
654 make -j2
655 make install
656 cd ..
657 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
658 fi
659 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
660 run: cmake -S . -B build
661 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
662 run: cmake --build build -j2
663 - name: Test
664 run: cmake --build build -j2 --target test
665 - name: Install
666 run: cmake --build build -j2 --target install -- DESTDIR=/tmp
667 - name: Failed tests log
668 if: ${{ failure() }}
669 run: cat build/Testing/Temporary/LastTest.log || true
670 - name: Package
671 env:
672 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
673 if: env.OS_VND!='Windows' && env.CC_VER=='cur' && env.CMAKE_BUILD_TYPE=='Release'
674 run: |
675 cmake -DENABLE_SASL=ON -DBUILD_DOCS_MANGZ=ON -S . -B build
676 cmake --build build -j2 --target package -- VERBOSE=
677 cmake -DCPACK_COMPONENT_INSTALL=ON build
678 cmake --build build -j2 --target package -- VERBOSE=
679 cmake --build build -j2 --target push-artifacts -- VERBOSE=
680 - name: Notify Gitter (success)
681 if: ${{ success() }}
682 run: |
683 REF=$(basename ${GITHUB_REF})
684 curl -sS "${{ secrets.GITTER }}" \
685 --data-urlencode "level=info" \
686 --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}})"
687 - name: Notify Gitter (failure)
688 if: ${{ failure() }}
689 run: |
690 REF=$(basename ${GITHUB_REF})
691 curl -sS "${{ secrets.GITTER }}" \
692 --data-urlencode "level=error" \
693 --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}})"