cf86dbbf400cd19ca2bd06f8d0decedd8cfa2628
[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 -my \
58 libevent-dev \
59 libsasl2-dev \
60 libtbb-dev \
61 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 -my \
150 libevent-dev \
151 libsasl2-dev \
152 libtbb-dev \
153 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 -my \
241 libevent-dev \
242 libsasl2-dev \
243 libtbb-dev \
244 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 -my \
335 libevent-dev \
336 libsasl2-dev \
337 libtbb-dev \
338 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 CMAKE_BUILD_TYPE: "Release"
413 ENABLE_SASL: "OFF"
414 BUILD_DOCS_MANGZ: "ON"
415 OS_VND: macOS #
416 OS_VER: macos-10.15 #
417 CC_VND: clang #
418 CC_VER: cur #
419 continue-on-error: true
420 steps:
421 - uses: actions/checkout@v2
422 - name: Install dependencies (Linux)
423 if: runner.os == 'Linux'
424 run: |
425 sudo apt-get install -my \
426 libevent-dev \
427 libsasl2-dev \
428 libtbb-dev \
429 m2r \
430 python3-sphinx \
431 ${INSTALL_MEMCACHED} \
432 ${INSTALL_CC} ${INSTALL_CXX}
433 sudo systemctl stop memcached || true
434 - name: Install dependencies (Mac)
435 if: runner.os == 'macOS'
436 run: |
437 brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
438 brew services stop memcached || true
439 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
440 - name: Build memcached
441 run: |
442 if test -d memcached
443 then
444 cd memcached
445 ./autogen.sh
446 ./configure CFLAGS="-O2 -pipe" \
447 --prefix=${MEMCACHED_PREFIX} \
448 --enable-sasl \
449 --enable-sasl-pwdb \
450 --disable-coverage \
451 --disable-dependency-tracking \
452 --disable-docs \
453 --disable-extstore \
454 --disable-option-checking \
455 ;
456 make -j2
457 make install
458 cd ..
459 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
460 fi
461 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
462 run: cmake -S . -B build
463 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
464 run: cmake --build build -j2
465 - name: Test
466 run: cmake --build build -j2 --target test
467 - name: Install
468 run: cmake --build build -j2 --target install -- DESTDIR=/tmp
469 - name: Failed tests log
470 if: ${{ failure() }}
471 run: cat build/Testing/Temporary/LastTest.log || true
472 - name: Package
473 env:
474 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
475 if: env.OS_VND!='Windows' && env.CC_VER=='cur' && env.CMAKE_BUILD_TYPE=='Release'
476 run: |
477 cmake -DENABLE_SASL=ON -DBUILD_DOCS_MANGZ=ON -S . -B build
478 cmake --build build -j2 --target package -- VERBOSE=
479 cmake -DCPACK_COMPONENT_INSTALL=ON build
480 cmake --build build -j2 --target package -- VERBOSE=
481 cmake --build build -j2 --target push-artifacts -- VERBOSE=
482 - name: Notify Gitter (success)
483 if: ${{ success() }}
484 run: |
485 REF=$(basename ${GITHUB_REF})
486 curl -sS "${{ secrets.GITTER }}" \
487 --data-urlencode "level=info" \
488 --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}})"
489 - name: Notify Gitter (failure)
490 if: ${{ failure() }}
491 run: |
492 REF=$(basename ${GITHUB_REF})
493 curl -sS "${{ secrets.GITTER }}" \
494 --data-urlencode "level=error" \
495 --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}})"
496
497 # win build
498 win-msvc:
499 name: win-msvc (windows-2019, msvc, cur)
500 runs-on: windows-2019 #
501 env:
502 CMAKE_BUILD_TYPE: "Release"
503 ENABLE_SASL: "OFF"
504 BISON_ROOT: "C:/msys64/usr"
505 FLEX_ROOT: "C:/msys64/usr"
506 OS_VND: Windows #
507 OS_VER: windows-2019 #
508 CC_VND: msvc #
509 CC_VER: cur #
510 continue-on-error: true
511 defaults:
512 run:
513 shell: msys2 {0}
514 steps:
515 - uses: actions/checkout@v2
516 - uses: msys2/setup-msys2@v2
517 with:
518 release: false
519 path-type: inherit
520 install: >-
521 rsync
522 openssh
523 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
524 run: cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
525 - name: Build all with ${{ env.CC_VND }}
526 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }}
527 - name: Install
528 run: cmake --install build --prefix installed --config ${{ env.CMAKE_BUILD_TYPE }}
529 - name: Package
530 env:
531 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
532 run: |
533 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} --target package
534 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} --target push-artifacts
535
536 # release builds
537 release:
538 strategy:
539 fail-fast: false
540 matrix:
541 os_ver: [ubuntu-20.04, ubuntu-18.04]
542 cc_vnd: [gnu, clang]
543 cc_ver: [new, cur, old]
544 runs-on: ${{ matrix.os_ver }}
545 continue-on-error: ${{ matrix.cc_vnd == 'clang' }}
546 env:
547 CMAKE_BUILD_TYPE: "Release"
548 BUILD_DOCS_MANGZ: "ON"
549 OS_VND: Linux
550 OS_VER: ${{ matrix.os_ver }}
551 CC_VND: ${{ matrix.cc_vnd }}
552 CC_VER: ${{ matrix.cc_ver }}
553 steps:
554 - uses: actions/checkout@v2
555 - name: Prepare environment (for new gnu on ubuntu-20.04)
556 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
557 run: |
558 echo CC="gcc-10" >> ${GITHUB_ENV}
559 echo CXX="g++-10" >> ${GITHUB_ENV}
560 echo INSTALL_CC="gcc-10" >> ${GITHUB_ENV}
561 echo INSTALL_CXX="g++-10" >> ${GITHUB_ENV}
562 - name: Prepare environment (for cur gnu on ubuntu-20.04)
563 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
564 run: |
565 echo CC="gcc-9" >> ${GITHUB_ENV}
566 echo CXX="g++-9" >> ${GITHUB_ENV}
567 - name: Prepare environment (for old gnu on ubuntu-20.04)
568 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
569 run: |
570 echo CC="gcc-8" >> ${GITHUB_ENV}
571 echo CXX="g++-8" >> ${GITHUB_ENV}
572 - name: Prepare environment (for new clang on ubuntu-20.04)
573 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
574 run: |
575 echo CC="clang-10" >> ${GITHUB_ENV}
576 echo CXX="clang++-10" >> ${GITHUB_ENV}
577 - name: Prepare environment (for cur clang on ubuntu-20.04)
578 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
579 run: |
580 echo CC="clang-9" >> ${GITHUB_ENV}
581 echo CXX="clang++-9" >> ${GITHUB_ENV}
582 - name: Prepare environment (for old clang on ubuntu-20.04)
583 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='old')
584 run: |
585 echo CC="clang-8" >> ${GITHUB_ENV}
586 echo CXX="clang++-8" >> ${GITHUB_ENV}
587 - name: Prepare environment (for new gnu on ubuntu-18.04)
588 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
589 run: |
590 echo CC="gcc-9" >> ${GITHUB_ENV}
591 echo CXX="g++-9" >> ${GITHUB_ENV}
592 - name: Prepare environment (for cur gnu on ubuntu-18.04)
593 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
594 run: |
595 echo CC="gcc-8" >> ${GITHUB_ENV}
596 echo CXX="g++-8" >> ${GITHUB_ENV}
597 - name: Prepare environment (for old gnu on ubuntu-18.04)
598 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
599 run: |
600 echo CC="gcc-7" >> ${GITHUB_ENV}
601 echo CXX="g++-7" >> ${GITHUB_ENV}
602 - name: Prepare environment (for new clang on ubuntu-18.04)
603 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
604 run: |
605 echo CC="clang-9" >> ${GITHUB_ENV}
606 echo CXX="clang++-9" >> ${GITHUB_ENV}
607 - name: Prepare environment (for cur clang on ubuntu-18.04)
608 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
609 run: |
610 echo CC="clang-8" >> ${GITHUB_ENV}
611 echo CXX="clang++-8" >> ${GITHUB_ENV}
612 - name: Prepare environment (for old clang on ubuntu-18.04)
613 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='old')
614 run: |
615 echo CC="clang-6.0" >> ${GITHUB_ENV}
616 echo CXX="clang++-6.0" >> ${GITHUB_ENV}
617 echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
618 - name: Prepare environment (for cur msvc on windows-2019)
619 if: (env.OS_VER=='windows-2019') && (env.CC_VND=='msvc') && (env.CC_VER=='cur')
620 run: |
621 echo CC="msvc2019" >> ${GITHUB_ENV}
622 echo CXX="msvc2019" >> ${GITHUB_ENV}
623 - name: Install dependencies (Linux)
624 if: runner.os == 'Linux'
625 run: |
626 sudo apt-get install -my \
627 libevent-dev \
628 libsasl2-dev \
629 libtbb-dev \
630 m2r \
631 python3-sphinx \
632 ${INSTALL_MEMCACHED} \
633 ${INSTALL_CC} ${INSTALL_CXX}
634 sudo systemctl stop memcached || true
635 - name: Install dependencies (Mac)
636 if: runner.os == 'macOS'
637 run: |
638 brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
639 brew services stop memcached || true
640 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
641 - name: Build memcached
642 run: |
643 if test -d memcached
644 then
645 cd memcached
646 ./autogen.sh
647 ./configure CFLAGS="-O2 -pipe" \
648 --prefix=${MEMCACHED_PREFIX} \
649 --enable-sasl \
650 --enable-sasl-pwdb \
651 --disable-coverage \
652 --disable-dependency-tracking \
653 --disable-docs \
654 --disable-extstore \
655 --disable-option-checking \
656 ;
657 make -j2
658 make install
659 cd ..
660 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
661 fi
662 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
663 run: cmake -S . -B build
664 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
665 run: cmake --build build -j2
666 - name: Test
667 run: cmake --build build -j2 --target test
668 - name: Install
669 run: cmake --build build -j2 --target install -- DESTDIR=/tmp
670 - name: Failed tests log
671 if: ${{ failure() }}
672 run: cat build/Testing/Temporary/LastTest.log || true
673 - name: Package
674 env:
675 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
676 if: env.OS_VND!='Windows' && env.CC_VER=='cur' && env.CMAKE_BUILD_TYPE=='Release'
677 run: |
678 cmake -DENABLE_SASL=ON -DBUILD_DOCS_MANGZ=ON -S . -B build
679 cmake --build build -j2 --target package -- VERBOSE=
680 cmake -DCPACK_COMPONENT_INSTALL=ON build
681 cmake --build build -j2 --target package -- VERBOSE=
682 cmake --build build -j2 --target push-artifacts -- VERBOSE=
683 - name: Notify Gitter (success)
684 if: ${{ success() }}
685 run: |
686 REF=$(basename ${GITHUB_REF})
687 curl -sS "${{ secrets.GITTER }}" \
688 --data-urlencode "level=info" \
689 --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}})"
690 - name: Notify Gitter (failure)
691 if: ${{ failure() }}
692 run: |
693 REF=$(basename ${GITHUB_REF})
694 curl -sS "${{ secrets.GITTER }}" \
695 --data-urlencode "level=error" \
696 --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}})"