update workflow
[awesomized/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 - "include/**"
7 - "src/**"
8 - "test/**"
9 - "CMake*"
10 - ".github/workflows/cmake-build-ci*"
11 branches-ignore:
12 - gh-pages
13 pull_request:
14 branches:
15 - master
16 - v1.x
17 env:
18 # defaults
19 INSTALL_MEMCACHED: memcached
20 CMAKE_BUILD_TYPE: Debug
21 BUILD_TESTING: "ON"
22 ENABLE_SASL: "OFF"
23 ENABLE_HASH_HSIEH: "ON"
24 ENABLE_DTRACE: "OFF"
25 VERBOSE: "ON"
26 OS_VND: Linux #
27 OS_VER: ubuntu-20.04 #
28 CC_VND: gnu #
29 CC_VER: cur #
30
31 jobs:
32
33 # new memcached
34 dbg-new:
35 name: dbg-new (ubuntu-20.04, gnu, cur)
36 runs-on: ubuntu-20.04 #
37 env:
38 INSTALL_MEMCACHED:
39 MEMCACHED_PREFIX: /tmp
40 ENABLE_SASL: "ON"
41 CFLAGS: "-O0 --coverage"
42 CXXFLAGS: "-O0 --coverage"
43 steps:
44 - uses: actions/checkout@v2
45 - uses: actions/checkout@v2
46 with:
47 repository: memcached/memcached
48 path: memcached
49 ref: 1.6.7
50 - name: Prepare environment (for cur gnu on ubuntu-20.04)
51 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
52 run: |
53 echo CC="gcc-9" >> ${GITHUB_ENV}
54 echo CXX="g++-9" >> ${GITHUB_ENV}
55 - name: Install dependencies (Linux)
56 if: runner.os == 'Linux'
57 run: |
58 sudo apt-get install \
59 libevent-dev \
60 libsasl2-dev \
61 ${INSTALL_MEMCACHED} \
62 ${INSTALL_CC} ${INSTALL_CXX}
63 sudo systemctl stop memcached || true
64 - name: Install dependencies (Mac)
65 if: runner.os == 'macOS'
66 run: |
67 brew install bison flex ${INSTALL_MEMCACHED}
68 brew services stop memcached || true
69 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
70 - name: Build memcached
71 run: |
72 if test -d memcached
73 then
74 cd memcached
75 ./autogen.sh
76 ./configure CFLAGS="-O2 -pipe" \
77 --prefix=${MEMCACHED_PREFIX} \
78 --enable-sasl \
79 --enable-sasl-pwdb \
80 --disable-coverage \
81 --disable-dependency-tracking \
82 --disable-docs \
83 --disable-extstore \
84 --disable-option-checking \
85 ;
86 make -j2
87 make install
88 cd ..
89 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
90 fi
91 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
92 run: cmake -S . -B build
93 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
94 run: make -C build -j2 all
95 - name: Test
96 run: make -C build -j2 test
97 - name: Install
98 run: make -C build -j2 install DESTDIR=/tmp
99 - name: Failed tests log
100 if: ${{ failure() }}
101 run: cat build/Testing/Temporary/LastTest.log || true
102 - name: Notify Gitter (success)
103 if: ${{ success() }}
104 run: |
105 REF=$(basename ${GITHUB_REF})
106 curl -sS "${{ secrets.GITTER }}" \
107 --data-urlencode "level=info" \
108 --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}})"
109 - name: Notify Gitter (failure)
110 if: ${{ failure() }}
111 run: |
112 REF=$(basename ${GITHUB_REF})
113 curl -sS "${{ secrets.GITTER }}" \
114 --data-urlencode "level=error" \
115 --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}})"
116 - uses: codecov/codecov-action@v1.0.13
117
118 # sanitizer build
119 dbg-san:
120 name: dbg-san (ubuntu-20.04, gnu, cur)
121 runs-on: ubuntu-20.04 #
122 env:
123 ENABLE_SANITIZERS: "address;undefined"
124 steps:
125 - uses: actions/checkout@v2
126 - name: Prepare environment (for cur gnu on ubuntu-20.04)
127 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
128 run: |
129 echo CC="gcc-9" >> ${GITHUB_ENV}
130 echo CXX="g++-9" >> ${GITHUB_ENV}
131 - name: Install dependencies (Linux)
132 if: runner.os == 'Linux'
133 run: |
134 sudo apt-get install \
135 libevent-dev \
136 libsasl2-dev \
137 ${INSTALL_MEMCACHED} \
138 ${INSTALL_CC} ${INSTALL_CXX}
139 sudo systemctl stop memcached || true
140 - name: Install dependencies (Mac)
141 if: runner.os == 'macOS'
142 run: |
143 brew install bison flex ${INSTALL_MEMCACHED}
144 brew services stop memcached || true
145 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
146 - name: Build memcached
147 run: |
148 if test -d memcached
149 then
150 cd memcached
151 ./autogen.sh
152 ./configure CFLAGS="-O2 -pipe" \
153 --prefix=${MEMCACHED_PREFIX} \
154 --enable-sasl \
155 --enable-sasl-pwdb \
156 --disable-coverage \
157 --disable-dependency-tracking \
158 --disable-docs \
159 --disable-extstore \
160 --disable-option-checking \
161 ;
162 make -j2
163 make install
164 cd ..
165 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
166 fi
167 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
168 run: cmake -S . -B build
169 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
170 run: make -C build -j2 all
171 - name: Test
172 run: make -C build -j2 test
173 - name: Install
174 run: make -C build -j2 install DESTDIR=/tmp
175 - name: Failed tests log
176 if: ${{ failure() }}
177 run: cat build/Testing/Temporary/LastTest.log || true
178 - name: Notify Gitter (success)
179 if: ${{ success() }}
180 run: |
181 REF=$(basename ${GITHUB_REF})
182 curl -sS "${{ secrets.GITTER }}" \
183 --data-urlencode "level=info" \
184 --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}})"
185 - name: Notify Gitter (failure)
186 if: ${{ failure() }}
187 run: |
188 REF=$(basename ${GITHUB_REF})
189 curl -sS "${{ secrets.GITTER }}" \
190 --data-urlencode "level=error" \
191 --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}})"
192
193 # mac build
194 dbg-mac:
195 name: dbg-mac (macos-10.15, clang, apple)
196 runs-on: macos-10.15 #
197 env:
198 CFLAGS: -O0 --coverage
199 CXXFLAGS: -O0 --coverage
200 continue-on-error: true
201 steps:
202 - uses: actions/checkout@v2
203 - name: Install dependencies (Linux)
204 if: runner.os == 'Linux'
205 run: |
206 sudo apt-get install \
207 libevent-dev \
208 libsasl2-dev \
209 ${INSTALL_MEMCACHED} \
210 ${INSTALL_CC} ${INSTALL_CXX}
211 sudo systemctl stop memcached || true
212 - name: Install dependencies (Mac)
213 if: runner.os == 'macOS'
214 run: |
215 brew install bison flex ${INSTALL_MEMCACHED}
216 brew services stop memcached || true
217 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
218 - name: Build memcached
219 run: |
220 if test -d memcached
221 then
222 cd memcached
223 ./autogen.sh
224 ./configure CFLAGS="-O2 -pipe" \
225 --prefix=${MEMCACHED_PREFIX} \
226 --enable-sasl \
227 --enable-sasl-pwdb \
228 --disable-coverage \
229 --disable-dependency-tracking \
230 --disable-docs \
231 --disable-extstore \
232 --disable-option-checking \
233 ;
234 make -j2
235 make install
236 cd ..
237 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
238 fi
239 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
240 run: cmake -S . -B build
241 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
242 run: make -C build -j2 all
243 - name: Test
244 run: make -C build -j2 test
245 - name: Install
246 run: make -C build -j2 install DESTDIR=/tmp
247 - name: Failed tests log
248 if: ${{ failure() }}
249 run: cat build/Testing/Temporary/LastTest.log || true
250 - name: Notify Gitter (success)
251 if: ${{ success() }}
252 run: |
253 REF=$(basename ${GITHUB_REF})
254 curl -sS "${{ secrets.GITTER }}" \
255 --data-urlencode "level=info" \
256 --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}})"
257 - name: Notify Gitter (failure)
258 if: ${{ failure() }}
259 run: |
260 REF=$(basename ${GITHUB_REF})
261 curl -sS "${{ secrets.GITTER }}" \
262 --data-urlencode "level=error" \
263 --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}})"
264 - uses: codecov/codecov-action@v1.0.13
265
266 # release builds
267 release:
268 strategy:
269 fail-fast: false
270 matrix:
271 os_ver: [ubuntu-20.04, ubuntu-18.04]
272 cc_vnd: [gnu, clang]
273 cc_ver: [new, cur, old]
274 runs-on: ${{ matrix.os_ver }}
275 continue-on-error: ${{ matrix.cc_vnd == 'clang' }}
276 env:
277 CMAKE_BUILD_TYPE: Release
278 OS_VND: Linux
279 OS_VER: ${{ matrix.os_ver }}
280 CC_VND: ${{ matrix.cc_vnd }}
281 CC_VER: ${{ matrix.cc_ver }}
282 steps:
283 - uses: actions/checkout@v2
284 - name: Prepare environment (for new gnu on ubuntu-20.04)
285 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
286 run: |
287 echo CC="gcc-10" >> ${GITHUB_ENV}
288 echo CXX="g++-10" >> ${GITHUB_ENV}
289 echo INSTALL_CC="gcc-10" >> ${GITHUB_ENV}
290 echo INSTALL_CXX="g++-10" >> ${GITHUB_ENV}
291 - name: Prepare environment (for cur gnu on ubuntu-20.04)
292 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
293 run: |
294 echo CC="gcc-9" >> ${GITHUB_ENV}
295 echo CXX="g++-9" >> ${GITHUB_ENV}
296 - name: Prepare environment (for old gnu on ubuntu-20.04)
297 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
298 run: |
299 echo CC="gcc-8" >> ${GITHUB_ENV}
300 echo CXX="g++-8" >> ${GITHUB_ENV}
301 - name: Prepare environment (for new clang on ubuntu-20.04)
302 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
303 run: |
304 echo CC="clang-10" >> ${GITHUB_ENV}
305 echo CXX="clang++-10" >> ${GITHUB_ENV}
306 - name: Prepare environment (for cur clang on ubuntu-20.04)
307 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
308 run: |
309 echo CC="clang-9" >> ${GITHUB_ENV}
310 echo CXX="clang++-9" >> ${GITHUB_ENV}
311 - name: Prepare environment (for old clang on ubuntu-20.04)
312 if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='old')
313 run: |
314 echo CC="clang-8" >> ${GITHUB_ENV}
315 echo CXX="clang++-8" >> ${GITHUB_ENV}
316 - name: Prepare environment (for new gnu on ubuntu-18.04)
317 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
318 run: |
319 echo CC="gcc-9" >> ${GITHUB_ENV}
320 echo CXX="g++-9" >> ${GITHUB_ENV}
321 - name: Prepare environment (for cur gnu on ubuntu-18.04)
322 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
323 run: |
324 echo CC="gcc-8" >> ${GITHUB_ENV}
325 echo CXX="g++-8" >> ${GITHUB_ENV}
326 - name: Prepare environment (for old gnu on ubuntu-18.04)
327 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
328 run: |
329 echo CC="gcc-7" >> ${GITHUB_ENV}
330 echo CXX="g++-7" >> ${GITHUB_ENV}
331 - name: Prepare environment (for new clang on ubuntu-18.04)
332 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
333 run: |
334 echo CC="clang-9" >> ${GITHUB_ENV}
335 echo CXX="clang++-9" >> ${GITHUB_ENV}
336 - name: Prepare environment (for cur clang on ubuntu-18.04)
337 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
338 run: |
339 echo CC="clang-8" >> ${GITHUB_ENV}
340 echo CXX="clang++-8" >> ${GITHUB_ENV}
341 - name: Prepare environment (for old clang on ubuntu-18.04)
342 if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='old')
343 run: |
344 echo CC="clang-6.0" >> ${GITHUB_ENV}
345 echo CXX="clang++-6.0" >> ${GITHUB_ENV}
346 echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
347 - name: Install dependencies (Linux)
348 if: runner.os == 'Linux'
349 run: |
350 sudo apt-get install \
351 libevent-dev \
352 libsasl2-dev \
353 ${INSTALL_MEMCACHED} \
354 ${INSTALL_CC} ${INSTALL_CXX}
355 sudo systemctl stop memcached || true
356 - name: Install dependencies (Mac)
357 if: runner.os == 'macOS'
358 run: |
359 brew install bison flex ${INSTALL_MEMCACHED}
360 brew services stop memcached || true
361 echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
362 - name: Build memcached
363 run: |
364 if test -d memcached
365 then
366 cd memcached
367 ./autogen.sh
368 ./configure CFLAGS="-O2 -pipe" \
369 --prefix=${MEMCACHED_PREFIX} \
370 --enable-sasl \
371 --enable-sasl-pwdb \
372 --disable-coverage \
373 --disable-dependency-tracking \
374 --disable-docs \
375 --disable-extstore \
376 --disable-option-checking \
377 ;
378 make -j2
379 make install
380 cd ..
381 echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
382 fi
383 - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
384 run: cmake -S . -B build
385 - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
386 run: make -C build -j2 all
387 - name: Test
388 run: make -C build -j2 test
389 - name: Install
390 run: make -C build -j2 install DESTDIR=/tmp
391 - name: Failed tests log
392 if: ${{ failure() }}
393 run: cat build/Testing/Temporary/LastTest.log || true
394 - name: Notify Gitter (success)
395 if: ${{ success() }}
396 run: |
397 REF=$(basename ${GITHUB_REF})
398 curl -sS "${{ secrets.GITTER }}" \
399 --data-urlencode "level=info" \
400 --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}})"
401 - name: Notify Gitter (failure)
402 if: ${{ failure() }}
403 run: |
404 REF=$(basename ${GITHUB_REF})
405 curl -sS "${{ secrets.GITTER }}" \
406 --data-urlencode "level=error" \
407 --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}})"