Skip to content

Commit 4239fe5

Browse files
committed
👷 update test.yml to add concurrency control, improve matrix parallelism, enhance DB health checks, and optimize dependency caching
1 parent 679a83a commit 4239fe5

File tree

1 file changed

+53
-43
lines changed

1 file changed

+53
-43
lines changed

.github/workflows/test.yml

Lines changed: 53 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ defaults:
1212
run:
1313
shell: bash
1414
permissions: read-all
15+
concurrency:
16+
group: test-${{ github.ref }}
17+
cancel-in-progress: true
1518

1619
jobs:
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

Comments
 (0)