11on :
22 pull_request :
3- paths-ignore :
4- - ' docs/**'
5- - ' README.md'
6- - ' CHANGELOG.md'
7- - ' .gitignore'
8- - ' .gitattributes'
9- - ' infection.json.dist'
10- - ' psalm.xml'
3+ paths :
4+ - ' src/**'
5+ - ' tests/**'
6+ - ' .github/workflows/mssql.yml'
7+ - ' composer.json'
8+ - ' phpunit.xml.dist'
119
1210 push :
1311 branches : ['master']
14- paths-ignore :
15- - ' docs/**'
16- - ' README.md'
17- - ' CHANGELOG.md'
18- - ' .gitignore'
19- - ' .gitattributes'
20- - ' infection.json.dist'
21- - ' psalm.xml'
12+ paths :
13+ - ' src/**'
14+ - ' tests/**'
15+ - ' .github/workflows/mssql.yml'
16+ - ' composer.json'
17+ - ' phpunit.xml.dist'
2218
23- name : mysql
19+ name : mssql
2420
2521jobs :
2622 tests :
27- name : PHP ${{ matrix.php }}-mysql -${{ matrix.mysql }}
23+ name : PHP ${{ matrix.php }}-mssql -${{ matrix.mssql.server }}
2824
2925 env :
30- extensions : pdo, pdo_mysql
26+ extensions : pdo, pdo_sqlsrv-5.12
3127
32- runs-on : ${{ matrix.os }}
28+ runs-on : ${{ matrix.mssql.os || 'ubuntu-latest' }}
3329
3430 strategy :
3531 matrix :
36- os :
37- - ubuntu-latest
38-
3932 php :
4033 - 8.3
4134 - 8.4
42-
43- mysql :
44- - 5.7
45- - latest
35+
36+ mssql :
37+ - server : 2022-latest
38+ odbc-version : 18
39+ flag : " -C"
40+
41+ include :
42+ - php : 8.3
43+ mssql :
44+ server : 2017-latest
45+ os : ubuntu-20.04
46+ - php : 8.3
47+ mssql :
48+ server : 2019-latest
49+ odbc-version : 18
50+ flag : " -C"
4651
4752 services :
48- mysql :
49- image : mysql :${{ matrix.mysql }}
53+ mssql :
54+ image : mcr.microsoft.com/mssql/server :${{ matrix.mssql.server }}
5055 env :
51- MYSQL_ALLOW_EMPTY_PASSWORD : true
52- MYSQL_PASSWORD : ' '
53- MYSQL_DATABASE : yiitest
56+ SA_PASSWORD : YourStrong!Passw0rd
57+ ACCEPT_EULA : Y
58+ MSSQL_PID : Developer
5459 ports :
55- - 3306:3306
56- options : --health-cmd="mysqladmin ping " --health-interval=10s --health-timeout=5s --health-retries=3
60+ - 1433:1433
61+ options : --name=mssql -- health-cmd="/opt/mssql-tools${{ matrix.mssql.odbc-version }}/bin/sqlcmd ${{ matrix.mssql.flag }} -S localhost -U SA -P 'YourStrong!Passw0rd' -Q 'SELECT 1' " --health-interval=10s --health-timeout=5s --health-retries=3
5762
5863 steps :
64+ - name : Install ODBC driver.
65+ run : |
66+ sudo curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
67+ sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
68+
5969 - name : Checkout
6070 uses : actions/checkout@v3
6171
72+ - name : Create MS SQL Database
73+ run : docker exec -i mssql /opt/mssql-tools${{ matrix.mssql.odbc-version }}/bin/sqlcmd ${{ matrix.mssql.flag }} -S localhost -U SA -P 'YourStrong!Passw0rd' -Q 'CREATE DATABASE yiitest'
74+
6275 - name : Install PHP with extensions
6376 uses : shivammathur/setup-php@v2
6477 with :
6578 php-version : ${{ matrix.php }}
6679 extensions : ${{ env.extensions }}
6780 ini-values : date.timezone='UTC'
6881 coverage : pcov
82+ tools : composer:v2, pecl
6983
7084 - name : Determine composer cache directory
71- if : matrix.os == 'ubuntu-latest'
7285 run : echo "COMPOSER_CACHE_DIR=$(composer config cache-dir)" >> $GITHUB_ENV
7386
7487 - name : Cache dependencies installed with composer
75- uses : actions/cache@v3
88+ uses : actions/cache@v4
7689 with :
7790 path : ${{ env.COMPOSER_CACHE_DIR }}
7891 key : php${{ matrix.php }}-composer-${{ hashFiles('**/composer.json') }}
@@ -86,17 +99,17 @@ jobs:
8699 run : composer update --prefer-dist --no-interaction --no-progress --optimize-autoloader --ansi
87100
88101 - name : Run tests with phpunit
89- run : vendor/bin/phpunit --testsuite Mysql --coverage-clover=coverage.xml --colors=always
102+ run : vendor/bin/phpunit --testsuite=Mssql --coverage-clover=coverage.xml --colors=always
90103 env :
91104 ENVIRONMENT : ci
92- CYCLE_MYSQL_DATABASE : yiitest
93- CYCLE_MYSQL_HOST : 127.0.0.1
94- CYCLE_MYSQL_PORT : 3306
95- CYCLE_MYSQL_USER : root
96- CYCLE_MYSQL_PASSWORD : ' '
105+ CYCLE_MSSQL_DATABASE : yiitest
106+ CYCLE_MSSQL_HOST : 127.0.0.1
107+ CYCLE_MSSQL_PORT : 1433
108+ CYCLE_MSSQL_USER : SA
109+ CYCLE_MSSQL_PASSWORD : YourStrong!Passw0rd
97110
98111 - name : Upload coverage to Codecov
99- if : matrix.os == 'ubuntu-latest'
100112 uses : codecov/codecov-action@v3
101113 with :
114+ token : ${{ secrets.CODECOV_TOKEN }}
102115 files : ./coverage.xml
0 commit comments