Skip to content

Commit 18165ba

Browse files
committed
changed ci config for mysql, postgres and mssql
1 parent 9fabd17 commit 18165ba

File tree

1 file changed

+100
-43
lines changed

1 file changed

+100
-43
lines changed

.github/workflows/ci.yml

Lines changed: 100 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,27 @@ jobs:
1616
matrix:
1717
laravel: [ 10, 11, 12 ]
1818
php: [ 8.2, 8.3, 8.4 ]
19-
include:
20-
# Laravel 12: PHP 8.2–8.4
21-
- laravel: 12
22-
php: 8.2
23-
- laravel: 12
24-
php: 8.3
25-
- laravel: 12
26-
php: 8.4
19+
db_engine: [ mysql, pgsql, sqlsrv ]
20+
mysql: [ 5.7, 8.0 ]
21+
22+
# Excludes (verhindern ungültige Kombinationen)
2723
exclude:
24+
# Kein PHP 8.4 mit Laravel 10 (bisher ausgeschlossen)
2825
- laravel: 10
2926
php: 8.4
30-
mysql: [ 5.7, 8.0 ]
27+
db_engine: mysql
28+
mysql: 5.7
29+
- laravel: 10
30+
php: 8.4
31+
db_engine: mysql
32+
mysql: 8.0
33+
# MSSQL nur mit Laravel 12 und PHP 8.2-8.4 (zum Beispiel)
34+
- laravel: 10
35+
db_engine: sqlsrv
36+
- laravel: 11
37+
db_engine: sqlsrv
38+
39+
name: Laravel ${{ matrix.laravel }} / PHP ${{ matrix.php }} / DB ${{ matrix.db_engine }} ${{ matrix.mysql || '' }}
3140

3241
services:
3342
mysql:
@@ -37,19 +46,39 @@ jobs:
3746
env:
3847
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
3948
MYSQL_DATABASE: testing
40-
options: >-
41-
--health-cmd="mysqladmin ping --silent"
42-
--health-interval=10s
43-
--health-timeout=5s
44-
--health-retries=3
45-
46-
name: Laravel ${{ matrix.laravel }} / PHP ${{ matrix.php }} / MySQL ${{ matrix.mysql }}
47-
env:
48-
DB_HOST: 127.0.0.1
49-
DB_PORT: 3306
50-
DB_DATABASE: testing
51-
DB_USERNAME: root
52-
DB_PASSWORD: ''
49+
options: >-
50+
--health-cmd="mysqladmin ping --silent"
51+
--health-interval=10s
52+
--health-timeout=5s
53+
--health-retries=3
54+
55+
postgres:
56+
image: postgres:15
57+
ports:
58+
- 5432:5432
59+
env:
60+
POSTGRES_DB: testing
61+
POSTGRES_USER: postgres
62+
POSTGRES_PASSWORD: ''
63+
options: >-
64+
--health-cmd="pg_isready -U postgres"
65+
--health-interval=10s
66+
--health-timeout=5s
67+
--health-retries=3
68+
69+
mssql:
70+
image: mcr.microsoft.com/mssql/server:2022-latest
71+
ports:
72+
- 1433:1433
73+
env:
74+
ACCEPT_EULA: Y
75+
SA_PASSWORD: Passw0rd1234!
76+
MSSQL_PID: Express
77+
options: >-
78+
--health-cmd="exit 0"
79+
--health-interval=10s
80+
--health-timeout=5s
81+
--health-retries=3
5382
5483
steps:
5584
- uses: actions/checkout@v4
@@ -58,36 +87,64 @@ jobs:
5887
uses: shivammathur/setup-php@v2
5988
with:
6089
php-version: ${{ matrix.php }}
61-
extensions: >
62-
mbstring,
63-
pdo_mysql,
64-
zip,
65-
exif,
66-
intl,
67-
gd,
68-
bcmath,
69-
curl,
70-
dom,
71-
xdebug
90+
extensions: mbstring, pdo_mysql, pdo_pgsql, pdo_sqlsrv, zip, exif, intl, gd, bcmath, curl, dom, xdebug
7291
coverage: xdebug
7392

7493
- name: Debug info
7594
run: |
7695
php -v
7796
composer --version
7897
mysql --version || true
98+
psql --version || true
99+
/opt/mssql-tools/bin/sqlcmd -? || true
79100
80-
- name: Wait for MySQL
101+
- name: Set DB env variables
81102
run: |
82-
echo "Waiting for MySQL..."
83-
for i in {30..0}; do
84-
if mysqladmin ping -h 127.0.0.1 --silent; then
85-
echo "MySQL is ready"
86-
break
87-
fi
88-
echo "Waiting for MySQL ($i)..."
89-
sleep 1
90-
done
103+
if [[ "${{ matrix.db_engine }}" == "mysql" ]]; then
104+
echo "DB_HOST=127.0.0.1" >> $GITHUB_ENV
105+
echo "DB_PORT=3306" >> $GITHUB_ENV
106+
echo "DB_USERNAME=root" >> $GITHUB_ENV
107+
echo "DB_PASSWORD=" >> $GITHUB_ENV
108+
echo "DB_DATABASE=testing" >> $GITHUB_ENV
109+
elif [[ "${{ matrix.db_engine }}" == "pgsql" ]]; then
110+
echo "DB_HOST=127.0.0.1" >> $GITHUB_ENV
111+
echo "DB_PORT=5432" >> $GITHUB_ENV
112+
echo "DB_USERNAME=postgres" >> $GITHUB_ENV
113+
echo "DB_PASSWORD=" >> $GITHUB_ENV
114+
echo "DB_DATABASE=testing" >> $GITHUB_ENV
115+
elif [[ "${{ matrix.db_engine }}" == "sqlsrv" ]]; then
116+
echo "DB_HOST=127.0.0.1" >> $GITHUB_ENV
117+
echo "DB_PORT=1433" >> $GITHUB_ENV
118+
echo "DB_USERNAME=SA" >> $GITHUB_ENV
119+
echo "DB_PASSWORD=Passw0rd1234!" >> $GITHUB_ENV
120+
echo "DB_DATABASE=testing" >> $GITHUB_ENV
121+
fi
122+
123+
- name: Wait for DB service
124+
run: |
125+
if [[ "${{ matrix.db_engine }}" == "mysql" ]]; then
126+
for i in {30..0}; do
127+
if mysqladmin ping -h 127.0.0.1 --silent; then
128+
echo "MySQL is ready"
129+
break
130+
fi
131+
echo "Waiting for MySQL ($i)..."
132+
sleep 1
133+
done
134+
elif [[ "${{ matrix.db_engine }}" == "pgsql" ]]; then
135+
for i in {30..0}; do
136+
if pg_isready -h 127.0.0.1 -U postgres; then
137+
echo "Postgres is ready"
138+
break
139+
fi
140+
echo "Waiting for Postgres ($i)..."
141+
sleep 1
142+
done
143+
elif [[ "${{ matrix.db_engine }}" == "sqlsrv" ]]; then
144+
# MSSQL health check not straightforward, wait fixed time
145+
echo "Waiting 30 seconds for MSSQL to start..."
146+
sleep 30
147+
fi
91148
92149
- name: Adjust Laravel/Testbench version per matrix
93150
run: |

0 commit comments

Comments
 (0)