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