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