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