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