@@ -12,6 +12,9 @@ defaults:
12
12
run :
13
13
shell : bash
14
14
permissions : read-all
15
+ concurrency :
16
+ group : test-${{ github.ref }}
17
+ cancel-in-progress : true
15
18
16
19
jobs :
17
20
analyze :
@@ -34,66 +37,68 @@ jobs:
34
37
needs : analyze
35
38
runs-on : ubuntu-latest
36
39
strategy :
40
+ fail-fast : false
41
+ max-parallel : 8
37
42
matrix :
38
43
include :
39
44
- toxenv : " python3.9"
40
45
db : " mariadb:5.5"
41
46
legacy_db : 1
42
- experimental : false
47
+ experimental : true
43
48
py : " 3.9"
44
49
45
50
- toxenv : " python3.10"
46
51
db : " mariadb:5.5"
47
52
legacy_db : 1
48
- experimental : false
53
+ experimental : true
49
54
py : " 3.10"
50
55
51
56
- toxenv : " python3.11"
52
57
db : " mariadb:5.5"
53
58
legacy_db : 1
54
- experimental : false
59
+ experimental : true
55
60
py : " 3.11"
56
61
57
62
- toxenv : " python3.12"
58
63
db : " mariadb:5.5"
59
64
legacy_db : 1
60
- experimental : false
65
+ experimental : true
61
66
py : " 3.12"
62
67
63
68
- toxenv : " python3.13"
64
69
db : " mariadb:5.5"
65
70
legacy_db : 1
66
- experimental : false
71
+ experimental : true
67
72
py : " 3.13"
68
73
69
74
- toxenv : " python3.9"
70
75
db : " mariadb:10.0"
71
76
legacy_db : 1
72
- experimental : false
77
+ experimental : true
73
78
py : " 3.9"
74
79
75
80
- toxenv : " python3.10"
76
81
db : " mariadb:10.0"
77
82
legacy_db : 1
78
- experimental : false
83
+ experimental : true
79
84
py : " 3.10"
80
85
81
86
- toxenv : " python3.11"
82
87
db : " mariadb:10.0"
83
88
legacy_db : 1
84
- experimental : false
89
+ experimental : true
85
90
py : " 3.11"
86
91
87
92
- toxenv : " python3.12"
88
93
db : " mariadb:10.0"
89
94
legacy_db : 1
90
- experimental : false
95
+ experimental : true
91
96
py : " 3.12"
92
97
93
98
- toxenv : " python3.13"
94
99
db : " mariadb:10.0"
95
100
legacy_db : 1
96
- experimental : false
101
+ experimental : true
97
102
py : " 3.13"
98
103
99
104
- toxenv : " python3.9"
@@ -219,91 +224,91 @@ jobs:
219
224
- toxenv : " python3.9"
220
225
db : " mysql:5.5"
221
226
legacy_db : 1
222
- experimental : false
227
+ experimental : true
223
228
py : " 3.9"
224
229
225
230
- toxenv : " python3.10"
226
231
db : " mysql:5.5"
227
232
legacy_db : 1
228
- experimental : false
233
+ experimental : true
229
234
py : " 3.10"
230
235
231
236
- toxenv : " python3.11"
232
237
db : " mysql:5.5"
233
238
legacy_db : 1
234
- experimental : false
239
+ experimental : true
235
240
py : " 3.11"
236
241
237
242
- toxenv : " python3.12"
238
243
db : " mysql:5.5"
239
244
legacy_db : 1
240
- experimental : false
245
+ experimental : true
241
246
py : " 3.12"
242
247
243
248
- toxenv : " python3.13"
244
249
db : " mysql:5.5"
245
250
legacy_db : 1
246
- experimental : false
251
+ experimental : true
247
252
py : " 3.13"
248
253
249
254
- toxenv : " python3.9"
250
255
db : " mysql:5.6"
251
256
legacy_db : 1
252
- experimental : false
257
+ experimental : true
253
258
py : " 3.9"
254
259
255
260
- toxenv : " python3.10"
256
261
db : " mysql:5.6"
257
262
legacy_db : 1
258
- experimental : false
263
+ experimental : true
259
264
py : " 3.10"
260
265
261
266
- toxenv : " python3.11"
262
267
db : " mysql:5.6"
263
268
legacy_db : 1
264
- experimental : false
269
+ experimental : true
265
270
py : " 3.11"
266
271
267
272
- toxenv : " python3.12"
268
273
db : " mysql:5.6"
269
274
legacy_db : 1
270
- experimental : false
275
+ experimental : true
271
276
py : " 3.12"
272
277
273
278
- toxenv : " python3.13"
274
279
db : " mysql:5.6"
275
280
legacy_db : 1
276
- experimental : false
281
+ experimental : true
277
282
py : " 3.13"
278
283
279
284
- toxenv : " python3.9"
280
285
db : " mysql:5.7"
281
286
legacy_db : 0
282
- experimental : false
287
+ experimental : true
283
288
py : " 3.9"
284
289
285
290
- toxenv : " python3.10"
286
291
db : " mysql:5.7"
287
292
legacy_db : 0
288
- experimental : false
293
+ experimental : true
289
294
py : " 3.10"
290
295
291
296
- toxenv : " python3.11"
292
297
db : " mysql:5.7"
293
298
legacy_db : 0
294
- experimental : false
299
+ experimental : true
295
300
py : " 3.11"
296
301
297
302
- toxenv : " python3.12"
298
303
db : " mysql:5.7"
299
304
legacy_db : 0
300
- experimental : false
305
+ experimental : true
301
306
py : " 3.12"
302
307
303
308
- toxenv : " python3.13"
304
309
db : " mysql:5.7"
305
310
legacy_db : 0
306
- experimental : false
311
+ experimental : true
307
312
py : " 3.13"
308
313
309
314
- toxenv : " python3.9"
@@ -339,31 +344,31 @@ jobs:
339
344
- toxenv : " python3.9"
340
345
db : " mysql:8.4"
341
346
legacy_db : 0
342
- experimental : false
347
+ experimental : true
343
348
py : " 3.9"
344
349
345
350
- toxenv : " python3.10"
346
351
db : " mysql:8.4"
347
352
legacy_db : 0
348
- experimental : false
353
+ experimental : true
349
354
py : " 3.10"
350
355
351
356
- toxenv : " python3.11"
352
357
db : " mysql:8.4"
353
358
legacy_db : 0
354
- experimental : false
359
+ experimental : true
355
360
py : " 3.11"
356
361
357
362
- toxenv : " python3.12"
358
363
db : " mysql:8.4"
359
364
legacy_db : 0
360
- experimental : false
365
+ experimental : true
361
366
py : " 3.12"
362
367
363
368
- toxenv : " python3.13"
364
369
db : " mysql:8.4"
365
370
legacy_db : 0
366
- experimental : false
371
+ experimental : true
367
372
py : " 3.13"
368
373
continue-on-error : ${{ matrix.experimental }}
369
374
services :
@@ -373,26 +378,33 @@ jobs:
373
378
- 3306:3306
374
379
env :
375
380
MYSQL_ALLOW_EMPTY_PASSWORD : yes
381
+ MARIADB_ALLOW_EMPTY_ROOT_PASSWORD : yes
376
382
options : >-
377
383
--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
378
389
steps :
379
390
- uses : actions/checkout@v5
380
391
- name : Set up Python ${{ matrix.py }}
381
392
uses : actions/setup-python@v5
382
393
with :
383
394
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
390
397
- name : Install dependencies
391
398
run : |
392
399
set -e
393
400
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
395
402
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
396
408
- name : Set up MySQL
397
409
env :
398
410
DB : ${{ matrix.db }}
@@ -404,12 +416,6 @@ jobs:
404
416
run : |
405
417
set -e
406
418
407
- while :
408
- do
409
- sleep 1
410
- mysql -h127.0.0.1 -uroot -e 'select version()' && break
411
- done
412
-
413
419
case "$DB" in
414
420
'mysql:8.0'|'mysql:8.4')
415
421
mysql -h127.0.0.1 -uroot -e "SET GLOBAL local_infile=on"
@@ -470,8 +476,12 @@ jobs:
470
476
- name : Test with tox
471
477
env :
472
478
LEGACY_DB : ${{ matrix.legacy_db }}
479
+ TOXENV : ${{ matrix.toxenv }}
473
480
run : tox
474
481
- name : Upload coverage to Codecov
482
+ env :
483
+ OS : ubuntu-latest
484
+ PYTHON : ${{ matrix.py }}
475
485
uses : codecov/codecov-action@v5
476
486
continue-on-error : true
477
487
with :
0 commit comments