update ci
[awesomized/libmemcached] / .github / workflows / cmake-build-ci.yml
1 # Generated file; do not edit!
2 name: cmake-build-ci
3 on:
4 workflow_dispatch:
5 release:
6 types: [published]
7 push:
8 paths:
9 - ".github/workflows/cmake-build-ci*"
10 - "CMake*"
11 - "CPack*"
12 - "contrib/**"
13 - "include/**"
14 - "src/**"
15 - "test/**"
16 branches-ignore:
17 - gh-pages
18 pull_request:
19 branches:
20 - master
21 - v1.x
22 env:
23 # defaults
24 INSTALL_MEMCACHED: memcached
25 ENABLE_SASL: "OFF" # ^ almost no memcached distribution package has built in sasl support
26 ENABLE_HASH_HSIEH: "ON"
27 ENABLE_DTRACE: "OFF"
28 OS_VND: Linux #
29 OS_VER: ubuntu-20.04 #
30 CC_VND: gnu #
31 CC_VER: cur #
32
33 jobs:
34
35 # new memcached
36 dbg-new:
37 name: dbg-new (ubuntu-20.04, gnu, cur)
38 runs-on: ubuntu-20.04 #
39 env:
40 CMAKE_BUILD_TYPE: "Debug"
41 BUILD_TESTING: "ON"
42 VERBOSE: "ON"
43 CFLAGS: "-O0 --coverage"
44 CXXFLAGS: "-O0 --coverage"
45 INSTALL_MEMCACHED: ""
46 MEMCACHED_PREFIX: "/tmp"
47 ENABLE_SASL: "ON"
48 steps:
49 - uses: actions/checkout@v2
50 - uses: actions/checkout@v2
51 with:
52 repository: memcached/memcached
53 path: memcached
54 ref: 1.6.7
55 - name: Prepare environment (for cur gnu on ubuntu-20.04)
56 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
57 run: |
58 echo CC="gcc-9" >> ${GITHUB_ENV}
59 echo CXX="g++-9" >> ${GITHUB_ENV}
60 - name: Install dependencies (Linux)
61 if: runner.os == 'Linux'
62 run: |
63 sudo apt-get install -my \
64 libevent-dev \
65 libsasl2-dev \
66 libtbb-dev \
67 python3-sphinx \
68 ${INSTALL_MEMCACHED} \
69 ${INSTALL_CC} ${INSTALL_CXX}
70 sudo systemctl stop memcached || true
71 - name: Build memcached
72 if: runner.os != 'Windows'
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 --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
95 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
96 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2
97 - name: Test
98 if: env.BUILD_TESTING == 'ON'
99 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target test
100 - name: Install
101 if: env.BUILD_TESTING == 'ON'
102 run: cmake --install build --config ${{ env.CMAKE_BUILD_TYPE }} --prefix /tmp
103 - name: Failed tests log
104 if: ${{ env.BUILD_TESTING == 'ON' && failure() }}
105 run: cat build/Testing/Temporary/LastTest.log || true
106 - name: Package
107 env:
108 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
109 if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new ')
110 run: |
111 cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
112 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
113 cmake -DCPACK_COMPONENT_INSTALL=ON build
114 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
115 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target push-artifacts
116 - name: Notify Gitter
117 env:
118 GITTER: ${{ secrets.GITTER }}
119 if: (success() || failure()) && env.GITTER != ''
120 run: bash .github/notify-gitter.sh ${{ job.status }}
121 - uses: codecov/codecov-action@v1.0.13
122
123 # sanitizer build
124 sanitizer:
125 runs-on: ubuntu-20.04 #
126 strategy:
127 matrix:
128 sanitizer: ['address;undefined', 'thread']
129 env:
130 CMAKE_BUILD_TYPE: "Debug"
131 BUILD_TESTING: "ON"
132 VERBOSE: "ON"
133 ENABLE_SANITIZERS: ${{ matrix.sanitizer }}
134 steps:
135 - uses: actions/checkout@v2
136 - name: Prepare environment (for cur gnu on ubuntu-20.04)
137 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
138 run: |
139 echo CC="gcc-9" >> ${GITHUB_ENV}
140 echo CXX="g++-9" >> ${GITHUB_ENV}
141 - name: Install dependencies (Linux)
142 if: runner.os == 'Linux'
143 run: |
144 sudo apt-get install -my \
145 libevent-dev \
146 libsasl2-dev \
147 libtbb-dev \
148 python3-sphinx \
149 ${INSTALL_MEMCACHED} \
150 ${INSTALL_CC} ${INSTALL_CXX}
151 sudo systemctl stop memcached || true
152 - name: Build memcached
153 if: runner.os != 'Windows'
154 run: |
155 if test -d memcached
156 then
157 cd memcached
158 ./autogen.sh
159 ./configure CFLAGS="-O2 -pipe" \
160 --prefix=${MEMCACHED_PREFIX} \
161 --enable-sasl \
162 --enable-sasl-pwdb \
163 --disable-coverage \
164 --disable-dependency-tracking \
165 --disable-docs \
166 --disable-extstore \
167 --disable-option-checking \
168 ;
169 make -j2
170 make install
171 cd ..
172 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
173 fi
174 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
175 run: cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
176 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
177 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2
178 - name: Test
179 if: env.BUILD_TESTING == 'ON'
180 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target test
181 - name: Install
182 if: env.BUILD_TESTING == 'ON'
183 run: cmake --install build --config ${{ env.CMAKE_BUILD_TYPE }} --prefix /tmp
184 - name: Failed tests log
185 if: ${{ env.BUILD_TESTING == 'ON' && failure() }}
186 run: cat build/Testing/Temporary/LastTest.log || true
187 - name: Package
188 env:
189 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
190 if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new ')
191 run: |
192 cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
193 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
194 cmake -DCPACK_COMPONENT_INSTALL=ON build
195 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
196 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target push-artifacts
197 - name: Notify Gitter
198 env:
199 GITTER: ${{ secrets.GITTER }}
200 if: (success() || failure()) && env.GITTER != ''
201 run: bash .github/notify-gitter.sh ${{ job.status }}
202
203 # mac debug
204 dbg-mac:
205 name: dbg-mac (macos-10.15, clang, cur)
206 runs-on: macos-10.15 #
207 env:
208 CMAKE_BUILD_TYPE: "Debug"
209 BUILD_TESTING: "ON"
210 VERBOSE: "ON"
211 CFLAGS: "-O0 --coverage"
212 CXXFLAGS: "-O0 --coverage"
213 OS_VND: macOS #
214 OS_VER: macos-10.15 #
215 CC_VND: clang #
216 CC_VER: cur #
217 continue-on-error: true
218 steps:
219 - uses: actions/checkout@v2
220 - name: Install dependencies (macOS)
221 if: runner.os == 'macOS'
222 run: |
223 brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
224 brew services stop memcached || true
225 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
226 - name: Build memcached
227 if: runner.os != 'Windows'
228 run: |
229 if test -d memcached
230 then
231 cd memcached
232 ./autogen.sh
233 ./configure CFLAGS="-O2 -pipe" \
234 --prefix=${MEMCACHED_PREFIX} \
235 --enable-sasl \
236 --enable-sasl-pwdb \
237 --disable-coverage \
238 --disable-dependency-tracking \
239 --disable-docs \
240 --disable-extstore \
241 --disable-option-checking \
242 ;
243 make -j2
244 make install
245 cd ..
246 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
247 fi
248 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
249 run: cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
250 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
251 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2
252 - name: Test
253 if: env.BUILD_TESTING == 'ON'
254 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target test
255 - name: Install
256 if: env.BUILD_TESTING == 'ON'
257 run: cmake --install build --config ${{ env.CMAKE_BUILD_TYPE }} --prefix /tmp
258 - name: Failed tests log
259 if: ${{ env.BUILD_TESTING == 'ON' && failure() }}
260 run: cat build/Testing/Temporary/LastTest.log || true
261 - name: Package
262 env:
263 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
264 if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new ')
265 run: |
266 cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
267 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
268 cmake -DCPACK_COMPONENT_INSTALL=ON build
269 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
270 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target push-artifacts
271 - name: Notify Gitter
272 env:
273 GITTER: ${{ secrets.GITTER }}
274 if: (success() || failure()) && env.GITTER != ''
275 run: bash .github/notify-gitter.sh ${{ job.status }}
276 - uses: codecov/codecov-action@v1.0.13
277
278 # mac release
279 rel-mac:
280 name: rel-mac (macos-10.15, clang, cur)
281 runs-on: macos-10.15 #
282 env:
283 CMAKE_BUILD_TYPE: "Release"
284 BUILD_DOCS_MANGZ: "ON"
285 OS_VND: macOS #
286 OS_VER: macos-10.15 #
287 CC_VND: clang #
288 CC_VER: cur #
289 continue-on-error: true
290 steps:
291 - uses: actions/checkout@v2
292 with:
293 fetch-depth: 0
294 - name: Install dependencies (macOS)
295 if: runner.os == 'macOS'
296 run: |
297 brew install bison flex sphinx-doc ${INSTALL_MEMCACHED}
298 brew services stop memcached || true
299 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
300 - name: Build memcached
301 if: runner.os != 'Windows'
302 run: |
303 if test -d memcached
304 then
305 cd memcached
306 ./autogen.sh
307 ./configure CFLAGS="-O2 -pipe" \
308 --prefix=${MEMCACHED_PREFIX} \
309 --enable-sasl \
310 --enable-sasl-pwdb \
311 --disable-coverage \
312 --disable-dependency-tracking \
313 --disable-docs \
314 --disable-extstore \
315 --disable-option-checking \
316 ;
317 make -j2
318 make install
319 cd ..
320 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
321 fi
322 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
323 run: cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
324 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
325 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2
326 - name: Test
327 if: env.BUILD_TESTING == 'ON'
328 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target test
329 - name: Install
330 if: env.BUILD_TESTING == 'ON'
331 run: cmake --install build --config ${{ env.CMAKE_BUILD_TYPE }} --prefix /tmp
332 - name: Failed tests log
333 if: ${{ env.BUILD_TESTING == 'ON' && failure() }}
334 run: cat build/Testing/Temporary/LastTest.log || true
335 - name: Package
336 env:
337 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
338 if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new ')
339 run: |
340 cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
341 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
342 cmake -DCPACK_COMPONENT_INSTALL=ON build
343 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
344 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target push-artifacts
345 - name: Notify Gitter
346 env:
347 GITTER: ${{ secrets.GITTER }}
348 if: (success() || failure()) && env.GITTER != ''
349 run: bash .github/notify-gitter.sh ${{ job.status }}
350
351 # windows release builds
352 windows:
353 strategy:
354 fail-fast: false
355 matrix:
356 os_ver: [windows-2019]
357 cc_vnd: [msvc, mingw]
358 cc_ver: [cur]
359 runs-on: ${{ matrix.os_ver }}
360 continue-on-error: true
361 env:
362 CMAKE_BUILD_TYPE: "Release"
363 OS_VND: Windows
364 OS_VER: ${{ matrix.os_ver }}
365 CC_VND: ${{ matrix.cc_vnd }}
366 CC_VER: ${{ matrix.cc_ver }}
367 steps:
368 - uses: actions/checkout@v2
369 with:
370 fetch-depth: 0
371 - name: Prepare environment (Windows)
372 run: |
373 echo "c:\msys64\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
374 echo "c:\msys64\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
375 - name: Prepare environment (MinGW)
376 if: env.CC_VND == 'mingw'
377 run: |
378 echo 'CMAKE_GENERATOR=MinGW Makefiles' | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
379 - name: Install dependencies (Windows)
380 if: runner.os == 'Windows'
381 uses: msys2/setup-msys2@v2
382 with:
383 release: false
384 path-type: inherit
385 install: >-
386 rsync
387 openssh
388 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
389 run: cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
390 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
391 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2
392 - name: Test
393 if: env.BUILD_TESTING == 'ON'
394 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target test
395 - name: Install
396 if: env.BUILD_TESTING == 'ON'
397 run: cmake --install build --config ${{ env.CMAKE_BUILD_TYPE }} --prefix /tmp
398 - name: Failed tests log
399 if: ${{ env.BUILD_TESTING == 'ON' && failure() }}
400 run: cat build/Testing/Temporary/LastTest.log || true
401 - name: Package
402 env:
403 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
404 if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new ')
405 run: |
406 cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
407 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
408 cmake -DCPACK_COMPONENT_INSTALL=ON build
409 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
410 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target push-artifacts
411 - name: Notify Gitter
412 env:
413 GITTER: ${{ secrets.GITTER }}
414 if: (success() || failure()) && env.GITTER != ''
415 run: bash .github/notify-gitter.sh ${{ job.status }}
416
417 # linux release builds
418 release:
419 strategy:
420 fail-fast: false
421 matrix:
422 os_ver: [ubuntu-20.04, ubuntu-18.04]
423 cc_vnd: [gnu, clang]
424 cc_ver: [new, cur, old]
425 runs-on: ${{ matrix.os_ver }}
426 continue-on-error: ${{ matrix.cc_vnd == 'clang' }}
427 env:
428 CMAKE_BUILD_TYPE: "Release"
429 BUILD_DOCS_MANGZ: "ON"
430 OS_VND: Linux
431 OS_VER: ${{ matrix.os_ver }}
432 CC_VND: ${{ matrix.cc_vnd }}
433 CC_VER: ${{ matrix.cc_ver }}
434 steps:
435 - uses: actions/checkout@v2
436 with:
437 fetch-depth: 0
438 - name: Prepare environment (for new gnu on ubuntu-20.04)
439 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
440 run: |
441 echo CC="gcc-10" >> ${GITHUB_ENV}
442 echo CXX="g++-10" >> ${GITHUB_ENV}
443 echo INSTALL_CC="gcc-10" >> ${GITHUB_ENV}
444 echo INSTALL_CXX="g++-10" >> ${GITHUB_ENV}
445 - name: Prepare environment (for cur gnu on ubuntu-20.04)
446 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
447 run: |
448 echo CC="gcc-9" >> ${GITHUB_ENV}
449 echo CXX="g++-9" >> ${GITHUB_ENV}
450 - name: Prepare environment (for old gnu on ubuntu-20.04)
451 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
452 run: |
453 echo CC="gcc-8" >> ${GITHUB_ENV}
454 echo CXX="g++-8" >> ${GITHUB_ENV}
455 - name: Prepare environment (for new clang on ubuntu-20.04)
456 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
457 run: |
458 echo CC="clang-10" >> ${GITHUB_ENV}
459 echo CXX="clang++-10" >> ${GITHUB_ENV}
460 echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
461 - name: Prepare environment (for cur clang on ubuntu-20.04)
462 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
463 run: |
464 echo CC="clang-9" >> ${GITHUB_ENV}
465 echo CXX="clang++-9" >> ${GITHUB_ENV}
466 echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
467 echo INSTALL_CXX="libc++-9-dev libc++abi-9-dev" >> ${GITHUB_ENV}
468 - name: Prepare environment (for old clang on ubuntu-20.04)
469 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='old')
470 run: |
471 echo CC="clang-8" >> ${GITHUB_ENV}
472 echo CXX="clang++-8" >> ${GITHUB_ENV}
473 echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
474 echo INSTALL_CXX="libc++-8-dev libc++abi-8-dev" >> ${GITHUB_ENV}
475 - name: Prepare environment (for new gnu on ubuntu-18.04)
476 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
477 run: |
478 echo CC="gcc-9" >> ${GITHUB_ENV}
479 echo CXX="g++-9" >> ${GITHUB_ENV}
480 - name: Prepare environment (for cur gnu on ubuntu-18.04)
481 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
482 run: |
483 echo CC="gcc-8" >> ${GITHUB_ENV}
484 echo CXX="g++-8" >> ${GITHUB_ENV}
485 - name: Prepare environment (for old gnu on ubuntu-18.04)
486 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
487 run: |
488 echo CC="gcc-7" >> ${GITHUB_ENV}
489 echo CXX="g++-7" >> ${GITHUB_ENV}
490 - name: Prepare environment (for new clang on ubuntu-18.04)
491 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
492 run: |
493 echo CC="clang-9" >> ${GITHUB_ENV}
494 echo CXX="clang++-9" >> ${GITHUB_ENV}
495 echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
496 - name: Prepare environment (for cur clang on ubuntu-18.04)
497 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
498 run: |
499 echo CC="clang-8" >> ${GITHUB_ENV}
500 echo CXX="clang++-8" >> ${GITHUB_ENV}
501 echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
502 - name: Prepare environment (for old clang on ubuntu-18.04)
503 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='old')
504 run: |
505 echo CC="clang-6.0" >> ${GITHUB_ENV}
506 echo CXX="clang++-6.0" >> ${GITHUB_ENV}
507 echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
508 - name: Install dependencies (Linux)
509 if: runner.os == 'Linux'
510 run: |
511 sudo apt-get install -my \
512 libevent-dev \
513 libsasl2-dev \
514 libtbb-dev \
515 python3-sphinx \
516 ${INSTALL_MEMCACHED} \
517 ${INSTALL_CC} ${INSTALL_CXX}
518 sudo systemctl stop memcached || true
519 - name: Build memcached
520 if: runner.os != 'Windows'
521 run: |
522 if test -d memcached
523 then
524 cd memcached
525 ./autogen.sh
526 ./configure CFLAGS="-O2 -pipe" \
527 --prefix=${MEMCACHED_PREFIX} \
528 --enable-sasl \
529 --enable-sasl-pwdb \
530 --disable-coverage \
531 --disable-dependency-tracking \
532 --disable-docs \
533 --disable-extstore \
534 --disable-option-checking \
535 ;
536 make -j2
537 make install
538 cd ..
539 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
540 fi
541 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
542 run: cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
543 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
544 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2
545 - name: Test
546 if: env.BUILD_TESTING == 'ON'
547 run: cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target test
548 - name: Install
549 if: env.BUILD_TESTING == 'ON'
550 run: cmake --install build --config ${{ env.CMAKE_BUILD_TYPE }} --prefix /tmp
551 - name: Failed tests log
552 if: ${{ env.BUILD_TESTING == 'ON' && failure() }}
553 run: cat build/Testing/Temporary/LastTest.log || true
554 - name: Package
555 env:
556 PUSH_ARTIFACTS_ID: ${{ secrets.PUSH_ARTIFACTS_ID }}
557 if: env.PUSH_ARTIFACTS_ID != '' && env.CMAKE_BUILD_TYPE == 'Release' && !(env.OS_VER == 'ubuntu-18.04' && env.CC_VND == 'gnu' && env.CC_VER == 'new ')
558 run: |
559 cmake --config ${{ env.CMAKE_BUILD_TYPE }} -S . -B build
560 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
561 cmake -DCPACK_COMPONENT_INSTALL=ON build
562 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target package
563 cmake --build build --config ${{ env.CMAKE_BUILD_TYPE }} -j2 --target push-artifacts
564 - name: Notify Gitter
565 env:
566 GITTER: ${{ secrets.GITTER }}
567 if: (success() || failure()) && env.GITTER != ''
568 run: bash .github/notify-gitter.sh ${{ job.status }}