Skip to content

Commit 49ae370

Browse files
committed
merge coverage reports.
1 parent c4889f7 commit 49ae370

File tree

1 file changed

+109
-22
lines changed

1 file changed

+109
-22
lines changed

.github/workflows/ci.yml

Lines changed: 109 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,40 @@ jobs:
6060
extensions: mbstring, pdo_mysql, zip, exif, intl, gd, bcmath, curl, dom, xdebug
6161
coverage: xdebug
6262

63-
- name: Run PHPUnit
64-
run: vendor/bin/phpunit --coverage-php=coverage/coverage.cov
63+
- name: Wait for MySQL
64+
run: |
65+
for i in {30..0}; do
66+
if mysqladmin ping -h 127.0.0.1 --silent; then
67+
echo "MySQL is ready"
68+
break
69+
fi
70+
echo "Waiting for MySQL ($i)..."
71+
sleep 1
72+
done
73+
74+
- name: Cache Composer dependencies
75+
uses: actions/cache@v3
76+
with:
77+
path: vendor
78+
key: ${{ runner.os }}-php-${{ matrix.php }}-laravel-${{ matrix.laravel }}-${{ hashFiles('**/composer.lock') }}
79+
restore-keys: |
80+
${{ runner.os }}-php-${{ matrix.php }}-laravel-${{ matrix.laravel }}-
81+
82+
- name: Adjust Laravel/Testbench version per matrix
83+
run: |
84+
composer remove laravel/framework orchestra/testbench --no-update || true
85+
composer require laravel/framework:^${{ matrix.laravel }} --no-update
86+
composer update --no-interaction --prefer-dist --no-progress
87+
88+
- name: Run Tests
89+
run: vendor/bin/phpunit --coverage-clover=coverage/clover.xml --path-coverage
6590

6691
- name: Upload coverage artifact
6792
uses: actions/upload-artifact@v4
6893
with:
6994
name: coverage-mysql-${{ matrix.laravel }}-${{ matrix.php }}-${{ matrix.mysql }}
70-
path: coverage/coverage.cov
95+
path: coverage/clover.xml
96+
7197

7298
test-pgsql:
7399
name: Laravel ${{ matrix.laravel }} / PHP ${{ matrix.php }} / PostgreSQL 15
@@ -77,7 +103,6 @@ jobs:
77103
matrix:
78104
laravel: [ 10, 11, 12 ]
79105
php: [ 8.2, 8.3, 8.4 ]
80-
81106
exclude:
82107
- laravel: 10
83108
php: 8.4
@@ -115,23 +140,52 @@ jobs:
115140
extensions: mbstring, pdo_pgsql, zip, exif, intl, gd, bcmath, curl, dom, xdebug
116141
coverage: xdebug
117142

118-
- name: Run PHPUnit
119-
run: vendor/bin/phpunit --coverage-php=coverage/coverage.cov
143+
- name: Wait for Postgres
144+
run: |
145+
for i in {30..0}; do
146+
if pg_isready -h 127.0.0.1 -U postgres; then
147+
echo "Postgres is ready"
148+
break
149+
fi
150+
echo "Waiting for Postgres ($i)..."
151+
sleep 1
152+
done
153+
154+
- name: Cache Composer dependencies
155+
uses: actions/cache@v3
156+
with:
157+
path: vendor
158+
key: ${{ runner.os }}-php-${{ matrix.php }}-laravel-${{ matrix.laravel }}-${{ hashFiles('**/composer.lock') }}
159+
restore-keys: |
160+
${{ runner.os }}-php-${{ matrix.php }}-laravel-${{ matrix.laravel }}-
161+
162+
- name: Adjust Laravel/Testbench version per matrix
163+
run: |
164+
composer remove laravel/framework orchestra/testbench --no-update || true
165+
composer require laravel/framework:^${{ matrix.laravel }} --no-update
166+
composer update --no-interaction --prefer-dist --no-progress
167+
168+
- name: Run Tests
169+
run: vendor/bin/phpunit --coverage-clover=coverage/clover.xml --path-coverage
120170

121171
- name: Upload coverage artifact
122172
uses: actions/upload-artifact@v4
123173
with:
124174
name: coverage-pgsql-${{ matrix.laravel }}-${{ matrix.php }}
125-
path: coverage/coverage.cov
175+
path: coverage/clover.xml
176+
126177

127178
test-sqlsrv:
128179
name: Laravel ${{ matrix.laravel }} / PHP ${{ matrix.php }} / MSSQL
129180
runs-on: ubuntu-latest
130181
timeout-minutes: 60
131182
strategy:
132183
matrix:
133-
laravel: [ 12 ]
134-
php: [ 8.4 ]
184+
laravel: [ 10, 11, 12 ]
185+
php: [ 8.2, 8.3, 8.4 ]
186+
exclude:
187+
- laravel: 10
188+
- laravel: 11
135189

136190
services:
137191
mssql:
@@ -159,13 +213,12 @@ jobs:
159213
steps:
160214
- uses: actions/checkout@v4
161215

162-
- name: Install ODBC Drivers
216+
- name: Install Microsoft ODBC Driver
163217
run: |
164218
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
165219
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
166220
sudo apt-get update
167-
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools
168-
sudo apt-get install -y unixodbc-dev
221+
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools unixodbc-dev
169222
170223
- name: Set up PHP with SQLSRV
171224
uses: shivammathur/setup-php@v2
@@ -174,33 +227,67 @@ jobs:
174227
extensions: mbstring, pdo_sqlsrv, sqlsrv, zip, exif, intl, gd, bcmath, curl, dom, xdebug
175228
coverage: xdebug
176229

177-
- name: Run PHPUnit
178-
run: vendor/bin/phpunit --coverage-php=coverage/coverage.cov
230+
- name: Wait for MSSQL
231+
run: sleep 30
232+
233+
- name: Initialize Database
234+
run: |
235+
/opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U SA -P 'Passw0rd1234!' -Q "
236+
CREATE DATABASE testing;
237+
CREATE LOGIN testuser WITH PASSWORD = 'TestPassw0rd!';
238+
CREATE USER testuser FOR LOGIN testuser;
239+
ALTER ROLE db_owner ADD MEMBER testuser;"
240+
241+
- name: Cache Composer dependencies
242+
uses: actions/cache@v3
243+
with:
244+
path: vendor
245+
key: ${{ runner.os }}-php-${{ matrix.php }}-laravel-${{ matrix.laravel }}-${{ hashFiles('**/composer.lock') }}
246+
restore-keys: |
247+
${{ runner.os }}-php-${{ matrix.php }}-laravel-${{ matrix.laravel }}-
248+
249+
- name: Adjust Laravel/Testbench version per matrix
250+
run: |
251+
composer remove laravel/framework orchestra/testbench --no-update || true
252+
composer require laravel/framework:^${{ matrix.laravel }} --no-update
253+
composer update --no-interaction --prefer-dist --no-progress
254+
255+
- name: Run Tests
256+
run: vendor/bin/phpunit --coverage-clover=coverage/clover.xml --path-coverage
179257

180258
- name: Upload coverage artifact
181259
uses: actions/upload-artifact@v4
182260
with:
183261
name: coverage-sqlsrv-${{ matrix.laravel }}-${{ matrix.php }}
184-
path: coverage/coverage.cov
262+
path: coverage/clover.xml
263+
185264

186265
merge-coverage:
187-
name: Merge Coverage Reports
266+
name: Merge Coverage
188267
runs-on: ubuntu-latest
189268
needs: [ test-mysql, test-pgsql, test-sqlsrv ]
269+
190270
steps:
191-
- uses: actions/download-artifact@v4
271+
- uses: actions/checkout@v4
272+
273+
- name: Download all coverage artifacts
274+
uses: actions/download-artifact@v4
192275
with:
193276
path: all-coverage
194277

195-
- name: Install phpcov
196-
run: composer global require phpunit/phpcov
278+
- name: Install PHP + phpcov
279+
run: |
280+
sudo apt-get update
281+
sudo apt-get install -y php-cli unzip curl git
282+
composer global require phpunit/phpcov
197283
198-
- name: Merge coverage
284+
- name: Merge coverage files
199285
run: |
200286
mkdir -p coverage
201-
phpcov merge --clover coverage/clover.xml all-coverage/
287+
find all-coverage -name '*.xml' > coverage-files.txt
288+
phpcov merge --clover coverage/clover.xml $(cat coverage-files.txt)
202289
203-
- name: Upload merged coverage to qltysh
290+
- name: Upload merged coverage to Qlty
204291
uses: qltysh/qlty-action/coverage@v1
205292
with:
206293
token: ${{ secrets.QLTY_COVERAGE_TOKEN }}

0 commit comments

Comments
 (0)