18
18
steps :
19
19
- uses : actions/checkout@v3
20
20
- name : Set up Python
21
- uses : actions/setup-python@v3
21
+ uses : actions/setup-python@v4
22
22
with :
23
23
python-version : " 3.x"
24
24
- name : Install dependencies
30
30
test :
31
31
needs : analyze
32
32
runs-on : ubuntu-latest
33
+ environment : test
33
34
strategy :
34
35
matrix :
35
36
include :
@@ -422,9 +423,7 @@ jobs:
422
423
legacy_db : 0
423
424
experimental : false
424
425
py : " 3.11"
425
-
426
426
continue-on-error : ${{ matrix.experimental }}
427
-
428
427
services :
429
428
mysql :
430
429
image : " ${{ matrix.db }}"
@@ -433,68 +432,87 @@ jobs:
433
432
env :
434
433
MYSQL_ALLOW_EMPTY_PASSWORD : yes
435
434
options : " --name=mysqld"
436
-
437
435
steps :
438
436
- uses : actions/checkout@v3
439
437
- name : Set up Python ${{ matrix.py }}
440
438
uses : actions/setup-python@v4
441
439
with :
442
440
python-version : ${{ matrix.py }}
443
-
444
441
- uses : actions/cache@v3
445
442
with :
446
443
path : ~/.cache/pip
447
444
key : ${{ runner.os }}-pip-1
448
445
restore-keys : |
449
446
${{ runner.os }}-pip-
450
-
451
447
- name : Install dependencies
452
448
run : |
453
449
python -m pip install --upgrade pip
454
450
python -m pip install -U codecov tox-gh-actions
455
451
pip install -r requirements_dev.txt
456
-
457
452
- name : Set up MySQL
458
453
env :
459
454
DB : ${{ matrix.db }}
455
+ MYSQL_USER : ${{ secrets.MYSQL_USER }}
456
+ MYSQL_PASSWORD : ${{ secrets.MYSQL_PASSWORD }}
457
+ MYSQL_DATABASE : ${{ vars.MYSQL_DATABASE }}
458
+ MYSQL_HOST : ${{ vars.MYSQL_HOST }}
459
+ MYSQL_PORT : ${{ vars.MYSQL_PORT }}
460
460
run : |
461
+ set -e
461
462
while :
462
463
do
463
- sleep 1
464
- mysql -h127.0.0.1 -uroot -e 'select version()' && break
464
+ sleep 1
465
+ mysql -h127.0.0.1 -uroot -e 'select version()' && break
465
466
done
466
- if [ $DB == 'mysql:8.0' ]; then
467
- WITH_PLUGIN='with mysql_native_password'
468
- mysql -h127.0.0.1 -uroot -e "SET GLOBAL local_infile=on"
469
- docker cp mysqld:/var/lib/mysql/public_key.pem "${HOME}"
470
- docker cp mysqld:/var/lib/mysql/ca.pem "${HOME}"
471
- docker cp mysqld:/var/lib/mysql/server-cert.pem "${HOME}"
472
- docker cp mysqld:/var/lib/mysql/client-key.pem "${HOME}"
473
- docker cp mysqld:/var/lib/mysql/client-cert.pem "${HOME}"
474
- mysql -uroot -h127.0.0.1 -e '
475
- CREATE USER
476
- user_sha256 IDENTIFIED WITH "sha256_password" BY "pass_sha256",
477
- nopass_sha256 IDENTIFIED WITH "sha256_password",
478
- user_caching_sha2 IDENTIFIED WITH "caching_sha2_password" BY "pass_caching_sha2",
479
- nopass_caching_sha2 IDENTIFIED WITH "caching_sha2_password"
480
- PASSWORD EXPIRE NEVER;'
481
- mysql -uroot -h127.0.0.1 -e 'GRANT RELOAD ON *.* TO user_caching_sha2;'
467
+ if [ " $DB" == 'mysql:8.0' ]; then
468
+ WITH_PLUGIN='with mysql_native_password'
469
+ mysql -h127.0.0.1 -uroot -e "SET GLOBAL local_infile=on"
470
+ docker cp mysqld:/var/lib/mysql/public_key.pem "${HOME}"
471
+ docker cp mysqld:/var/lib/mysql/ca.pem "${HOME}"
472
+ docker cp mysqld:/var/lib/mysql/server-cert.pem "${HOME}"
473
+ docker cp mysqld:/var/lib/mysql/client-key.pem "${HOME}"
474
+ docker cp mysqld:/var/lib/mysql/client-cert.pem "${HOME}"
475
+ mysql -uroot -h127.0.0.1 -e '
476
+ CREATE USER
477
+ user_sha256 IDENTIFIED WITH "sha256_password" BY "pass_sha256",
478
+ nopass_sha256 IDENTIFIED WITH "sha256_password",
479
+ user_caching_sha2 IDENTIFIED WITH "caching_sha2_password" BY "pass_caching_sha2",
480
+ nopass_caching_sha2 IDENTIFIED WITH "caching_sha2_password"
481
+ PASSWORD EXPIRE NEVER;'
482
+ mysql -uroot -h127.0.0.1 -e 'GRANT RELOAD ON *.* TO user_caching_sha2;'
482
483
else
483
- WITH_PLUGIN=''
484
+ WITH_PLUGIN=''
484
485
fi
485
- mysql -h127.0.0.1 -uroot -e 'create database test_db DEFAULT CHARACTER SET utf8mb4'
486
- mysql -h127.0.0.1 -uroot -e "create user tester identified ${WITH_PLUGIN} by 'testpass'; grant all on test_db.* to tester;"
487
- mysql -h127.0.0.1 -uroot -e "create user tester@localhost identified ${WITH_PLUGIN} by 'testpass'; grant all on test_db.* to tester@localhost;"
488
- cp ci/db_credentials.json tests/db_credentials.json
489
-
486
+ mysql -h127.0.0.1 -uroot -e "create database $MYSQL_DATABASE DEFAULT CHARACTER SET utf8mb4"
487
+ mysql -h127.0.0.1 -uroot -e "create user $MYSQL_USER identified $WITH_PLUGIN by '${MYSQL_PASSWORD}'; grant all on ${MYSQL_DATABASE}.* to ${MYSQL_USER};"
488
+ mysql -h127.0.0.1 -uroot -e "create user ${MYSQL_USER}@localhost identified $WITH_PLUGIN by '${MYSQL_PASSWORD}'; grant all on ${MYSQL_DATABASE}.* to ${MYSQL_USER}@localhost;"
489
+ - name : Create db_credentials.json
490
+ env :
491
+ MYSQL_USER : ${{ secrets.MYSQL_USER }}
492
+ MYSQL_PASSWORD : ${{ secrets.MYSQL_PASSWORD }}
493
+ MYSQL_DATABASE : ${{ vars.MYSQL_DATABASE }}
494
+ MYSQL_HOST : ${{ vars.MYSQL_HOST }}
495
+ MYSQL_PORT : ${{ vars.MYSQL_PORT }}
496
+ run : |
497
+ set -e
498
+ jq -n \
499
+ --arg mysql_user "$MYSQL_USER" \
500
+ --arg mysql_password "$MYSQL_PASSWORD" \
501
+ --arg mysql_database "$MYSQL_DATABASE" \
502
+ --arg mysql_host "$MYSQL_HOST" \
503
+ --arg mysql_port $MYSQL_PORT \
504
+ '$ARGS.named' > tests/db_credentials.json
490
505
- name : Test with tox
491
- run : tox
492
506
env :
493
507
LEGACY_DB : ${{ matrix.legacy_db }}
494
-
508
+ run : tox
495
509
- name : Upload coverage to Codecov
496
510
uses : codecov/codecov-action@v3
497
511
with :
498
512
files : ./coverage.xml
499
513
env_vars : OS,PYTHON
500
514
verbose : true
515
+ - name : Cleanup
516
+ if : ${{ always() }}
517
+ run : |
518
+ rm -rf tests/db_credentials.json
0 commit comments