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