77 branches : [ main ]
88jobs :
99 test :
10+ runs-on : ubuntu-latest
11+ timeout-minutes : 10
12+
13+ env :
14+ SA_SQL_SERVER_PASSWORD : ${{ secrets.SA_SQL_SERVER_PASSWORD }}
15+ MYSQL_ROOT_PASSWORD : ${{ secrets.MYSQL_ROOT_PASSWORD }}
1016
1117 services :
12- sql.data :
13- image : mcr.microsoft.com/mssql/server:2019-latest
14- env :
15- SA_PASSWORD : ${{ secrets.SA_PASSWORD }}
16- ACCEPT_EULA : Y
17- MSSQL_PID : Express
18- ports :
19- - " 1433:1433"
18+ sqlserver :
19+ image : mcr.microsoft.com/mssql/server:2019-latest
20+ env :
21+ SA_PASSWORD : ${{ secrets.SA_SQL_SERVER_PASSWORD }}
22+ ACCEPT_EULA : Y
23+ MSSQL_PID : Express
24+ ports :
25+ - " 1433:1433"
26+ mysql :
27+ image : mysql:8.0
28+ env :
29+ MYSQL_ROOT_PASSWORD : ${{ secrets.MYSQL_ROOT_PASSWORD }}
30+ MYSQL_DATABASE : testing_db
31+ MYSQL_ROOT_HOST : ' %'
32+ ports :
33+ - 3306:3306
34+ options : --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
35+ strategy :
36+ fail-fast : true
2037
38+ name : Run PHPUnit Tests
39+
2140 steps :
41+ - name : Clone Repo
42+ uses : actions/checkout@v4
43+
44+ - name : Setup PHP
45+ uses : shivammathur/setup-php@v2
46+ with :
47+ php-version : 8.1
48+ extensions : mysqli, mbstring, sqlsrv
49+ tools : phpunit:9.5.20, composer
50+
51+ - name : Install ODBC Driver for SQL Server
52+ run : |
53+ curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
54+ curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
55+ sudo apt update
56+ sudo ACCEPT_EULA=Y apt install mssql-tools18 unixodbc-dev msodbcsql18
57+
58+ - name : Wait for SQL Server
59+ run : |
60+ for i in {1..12}; do
61+ if /opt/mssql-tools18/bin/sqlcmd -S localhost -U SA -P '${{ secrets.SA_SQL_SERVER_PASSWORD }}' -Q 'SELECT 1' -C > /dev/null 2>&1; then
62+ echo "SQL Server is ready"
63+ break
64+ fi
65+ echo "Waiting for SQL Server... ($i/12)"
66+ sleep 10
67+ done
68+
69+ - name : Create SQL Server Database
70+ run : /opt/mssql-tools18/bin/sqlcmd -S localhost -U SA -P '${{ secrets.SA_SQL_SERVER_PASSWORD }}' -Q 'create database testing_db' -C
71+
72+ - name : Setup MySQL Client
73+ run : |
74+ sudo apt update
75+ sudo apt install mysql-client-core-8.0
76+
77+ - name : Wait for MySQL
78+ run : |
79+ until mysqladmin ping -h 127.0.0.1 --silent; do
80+ echo 'waiting for mysql...'
81+ sleep 1
82+ done
83+
84+ - name : Create MySQL Database
85+ run : |
86+ mysql -h 127.0.0.1 -u root -p${{ secrets.MYSQL_ROOT_PASSWORD }} -e "CREATE DATABASE IF NOT EXISTS testing_db;"
2287
23- - name : Shutdown Ubuntu MySQL
24- run : sudo service mysql stop
25-
26- - name : Set up MySQL
27- uses :
mirromutth/[email protected] 28- with :
29- mysql version : ' 5.7'
30- mysql database : ' testing_db'
31- mysql root password : ${{ secrets.MYSQL_ROOT_PASSWORD }}
32- mysql user : ' root'
33- mysql password : ${{ secrets.MYSQL_ROOT_PASSWORD }}
34-
35- - name : Wait for MySQL
36- run : |
37- while ! mysqladmin ping --host=127.0.0.1 --password=${{ secrets.MYSQL_ROOT_PASSWORD }} --silent; do
38- sleep 1
39- done
40-
41- - name : Setup MSSQL
42- run : |
43- curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
44- curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
45- sudo apt update
46- sudo apt install mssql-tools18
47- /opt/mssql-tools18/bin/sqlcmd -S localhost -U SA -P ${{ secrets.SA_PASSWORD }} -Q 'create database testing_db' -C
48-
49- - name : Run Tests
88+ - name : Install Dependencies
89+ run : composer install --prefer-source --no-interaction
5090
51- uses : WebFiori/workflows/.github/workflows/test-php.yaml@main
52- with :
53- php-version : ' 8.1'
54-
91+ - name : Execute Tests
92+ run : phpunit --configuration=tests/phpunit.xml --coverage-clover=clover.xml --verbose
93+
94+ - name : Rename coverage report
95+ run : |
96+ mv clover.xml php-8.1-coverage.xml
97+
98+ - name : Upload Coverage Report
99+ uses : actions/upload-artifact@v4
100+ with :
101+ name : code-coverage
102+ path : php-8.1-coverage.xml
55103
56104 code-coverage :
57105 name : Coverage
61109 php-version : ' 8.1'
62110 coverage-file : ' php-8.1-coverage.xml'
63111 secrets :
64- CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }}
65-
66-
67-
112+ CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }}
0 commit comments