@@ -12,6 +12,9 @@ defaults:
1212 run :
1313 shell : bash
1414permissions : read-all
15+ concurrency :
16+ group : test-${{ github.ref }}
17+ cancel-in-progress : true
1518
1619jobs :
1720 analyze :
@@ -34,66 +37,68 @@ jobs:
3437 needs : analyze
3538 runs-on : ubuntu-latest
3639 strategy :
40+ fail-fast : false
41+ max-parallel : 8
3742 matrix :
3843 include :
3944 - toxenv : " python3.9"
4045 db : " mariadb:5.5"
4146 legacy_db : 1
42- experimental : false
47+ experimental : true
4348 py : " 3.9"
4449
4550 - toxenv : " python3.10"
4651 db : " mariadb:5.5"
4752 legacy_db : 1
48- experimental : false
53+ experimental : true
4954 py : " 3.10"
5055
5156 - toxenv : " python3.11"
5257 db : " mariadb:5.5"
5358 legacy_db : 1
54- experimental : false
59+ experimental : true
5560 py : " 3.11"
5661
5762 - toxenv : " python3.12"
5863 db : " mariadb:5.5"
5964 legacy_db : 1
60- experimental : false
65+ experimental : true
6166 py : " 3.12"
6267
6368 - toxenv : " python3.13"
6469 db : " mariadb:5.5"
6570 legacy_db : 1
66- experimental : false
71+ experimental : true
6772 py : " 3.13"
6873
6974 - toxenv : " python3.9"
7075 db : " mariadb:10.0"
7176 legacy_db : 1
72- experimental : false
77+ experimental : true
7378 py : " 3.9"
7479
7580 - toxenv : " python3.10"
7681 db : " mariadb:10.0"
7782 legacy_db : 1
78- experimental : false
83+ experimental : true
7984 py : " 3.10"
8085
8186 - toxenv : " python3.11"
8287 db : " mariadb:10.0"
8388 legacy_db : 1
84- experimental : false
89+ experimental : true
8590 py : " 3.11"
8691
8792 - toxenv : " python3.12"
8893 db : " mariadb:10.0"
8994 legacy_db : 1
90- experimental : false
95+ experimental : true
9196 py : " 3.12"
9297
9398 - toxenv : " python3.13"
9499 db : " mariadb:10.0"
95100 legacy_db : 1
96- experimental : false
101+ experimental : true
97102 py : " 3.13"
98103
99104 - toxenv : " python3.9"
@@ -219,91 +224,91 @@ jobs:
219224 - toxenv : " python3.9"
220225 db : " mysql:5.5"
221226 legacy_db : 1
222- experimental : false
227+ experimental : true
223228 py : " 3.9"
224229
225230 - toxenv : " python3.10"
226231 db : " mysql:5.5"
227232 legacy_db : 1
228- experimental : false
233+ experimental : true
229234 py : " 3.10"
230235
231236 - toxenv : " python3.11"
232237 db : " mysql:5.5"
233238 legacy_db : 1
234- experimental : false
239+ experimental : true
235240 py : " 3.11"
236241
237242 - toxenv : " python3.12"
238243 db : " mysql:5.5"
239244 legacy_db : 1
240- experimental : false
245+ experimental : true
241246 py : " 3.12"
242247
243248 - toxenv : " python3.13"
244249 db : " mysql:5.5"
245250 legacy_db : 1
246- experimental : false
251+ experimental : true
247252 py : " 3.13"
248253
249254 - toxenv : " python3.9"
250255 db : " mysql:5.6"
251256 legacy_db : 1
252- experimental : false
257+ experimental : true
253258 py : " 3.9"
254259
255260 - toxenv : " python3.10"
256261 db : " mysql:5.6"
257262 legacy_db : 1
258- experimental : false
263+ experimental : true
259264 py : " 3.10"
260265
261266 - toxenv : " python3.11"
262267 db : " mysql:5.6"
263268 legacy_db : 1
264- experimental : false
269+ experimental : true
265270 py : " 3.11"
266271
267272 - toxenv : " python3.12"
268273 db : " mysql:5.6"
269274 legacy_db : 1
270- experimental : false
275+ experimental : true
271276 py : " 3.12"
272277
273278 - toxenv : " python3.13"
274279 db : " mysql:5.6"
275280 legacy_db : 1
276- experimental : false
281+ experimental : true
277282 py : " 3.13"
278283
279284 - toxenv : " python3.9"
280285 db : " mysql:5.7"
281286 legacy_db : 0
282- experimental : false
287+ experimental : true
283288 py : " 3.9"
284289
285290 - toxenv : " python3.10"
286291 db : " mysql:5.7"
287292 legacy_db : 0
288- experimental : false
293+ experimental : true
289294 py : " 3.10"
290295
291296 - toxenv : " python3.11"
292297 db : " mysql:5.7"
293298 legacy_db : 0
294- experimental : false
299+ experimental : true
295300 py : " 3.11"
296301
297302 - toxenv : " python3.12"
298303 db : " mysql:5.7"
299304 legacy_db : 0
300- experimental : false
305+ experimental : true
301306 py : " 3.12"
302307
303308 - toxenv : " python3.13"
304309 db : " mysql:5.7"
305310 legacy_db : 0
306- experimental : false
311+ experimental : true
307312 py : " 3.13"
308313
309314 - toxenv : " python3.9"
@@ -339,31 +344,31 @@ jobs:
339344 - toxenv : " python3.9"
340345 db : " mysql:8.4"
341346 legacy_db : 0
342- experimental : false
347+ experimental : true
343348 py : " 3.9"
344349
345350 - toxenv : " python3.10"
346351 db : " mysql:8.4"
347352 legacy_db : 0
348- experimental : false
353+ experimental : true
349354 py : " 3.10"
350355
351356 - toxenv : " python3.11"
352357 db : " mysql:8.4"
353358 legacy_db : 0
354- experimental : false
359+ experimental : true
355360 py : " 3.11"
356361
357362 - toxenv : " python3.12"
358363 db : " mysql:8.4"
359364 legacy_db : 0
360- experimental : false
365+ experimental : true
361366 py : " 3.12"
362367
363368 - toxenv : " python3.13"
364369 db : " mysql:8.4"
365370 legacy_db : 0
366- experimental : false
371+ experimental : true
367372 py : " 3.13"
368373 continue-on-error : ${{ matrix.experimental }}
369374 services :
@@ -373,26 +378,33 @@ jobs:
373378 - 3306:3306
374379 env :
375380 MYSQL_ALLOW_EMPTY_PASSWORD : yes
381+ MARIADB_ALLOW_EMPTY_ROOT_PASSWORD : yes
376382 options : >-
377383 --name=mysqld
384+ --health-start-period=60s
385+ --health-cmd="command -v healthcheck.sh >/dev/null 2>&1 && healthcheck.sh --connect --innodb_initialized || mysqladmin ping -h 127.0.0.1 --silent"
386+ --health-interval=10s
387+ --health-timeout=5s
388+ --health-retries=30
378389 steps :
379390 - uses : actions/checkout@v5
380391 - name : Set up Python ${{ matrix.py }}
381392 uses : actions/setup-python@v5
382393 with :
383394 python-version : ${{ matrix.py }}
384- - uses : actions/cache@v4
385- with :
386- path : ~/.cache/pip
387- key : ${{ runner.os }}-pip-1
388- restore-keys : |
389- ${{ runner.os }}-pip-
395+ cache : " pip"
396+ cache-dependency-path : requirements_dev.txt
390397 - name : Install dependencies
391398 run : |
392399 set -e
393400 python -m pip install --upgrade pip
394- python -m pip install -U codecov tox-gh-actions
401+ python -m pip install -U tox-gh-actions
395402 pip install -r requirements_dev.txt
403+ - name : Install MySQL client
404+ run : |
405+ set -e
406+ sudo apt-get update
407+ sudo apt-get install -y mysql-client
396408 - name : Set up MySQL
397409 env :
398410 DB : ${{ matrix.db }}
@@ -404,12 +416,6 @@ jobs:
404416 run : |
405417 set -e
406418
407- while :
408- do
409- sleep 1
410- mysql -h127.0.0.1 -uroot -e 'select version()' && break
411- done
412-
413419 case "$DB" in
414420 'mysql:8.0'|'mysql:8.4')
415421 mysql -h127.0.0.1 -uroot -e "SET GLOBAL local_infile=on"
@@ -470,8 +476,12 @@ jobs:
470476 - name : Test with tox
471477 env :
472478 LEGACY_DB : ${{ matrix.legacy_db }}
479+ TOXENV : ${{ matrix.toxenv }}
473480 run : tox
474481 - name : Upload coverage to Codecov
482+ env :
483+ OS : ubuntu-latest
484+ PYTHON : ${{ matrix.py }}
475485 uses : codecov/codecov-action@v5
476486 continue-on-error : true
477487 with :
0 commit comments