-
Notifications
You must be signed in to change notification settings - Fork 2
145 lines (125 loc) · 5.37 KB
/
pr-php.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
on:
pull_request:
paths:
- '**.php'
- '**.yaml'
- 'composer.json'
- 'composer.lock'
- '!engine/**'
- '!.github/workflows/pr-js.yaml'
name: Review PHP
jobs:
php-test-composer-install:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: ['8.3']
name: Validate composer (${{ matrix.php}})
steps:
- uses: actions/checkout@v3
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php}}
extensions: apcu, ctype, iconv, json, redis, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Validate composer files
run: composer validate composer.json --strict
- name: Composer install with exported .env variables
run: |
set -a && source .env && set +a
APP_ENV=prod composer install --no-dev -o
phpcsfixer:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: ['8.3']
name: Coding style fixer (${{ matrix.php }})
steps:
- uses: actions/checkout@v3
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: apcu, ctype, iconv, json, redis, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: php-cs-fixer
run: composer coding-standards-check
doctrine:
runs-on: ubuntu-latest
services:
mariadb:
image: mariadb:10.3
ports:
- 3306
env:
MYSQL_USER: db
MYSQL_PASSWORD: db
MYSQL_DATABASE: db
MYSQL_ROOT_PASSWORD: password
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
strategy:
fail-fast: false
matrix:
php: ['8.3']
name: Validate database schema (${{ matrix.php }})
steps:
- uses: actions/checkout@v3
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: apcu, ctype, iconv, json, redis, xmlreader, zip
coverage: none
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
- name: Verify MariaDB connection
env:
MARIA_DB_PORT: ${{ job.services.mariadb.ports[3306] }}
run: |
while ! mysqladmin ping -h"127.0.0.1" -P"$MARIA_DB_PORT" --silent; do
sleep 1
done
- name: Run Doctrine Migrations
env:
MARIA_DB_PORT: ${{ job.services.mariadb.ports[3306] }}
run: DATABASE_URL=mysql://db:[email protected]:$MARIA_DB_PORT/db php bin/console doctrine:migrations:migrate --no-interaction
- name: Validate DB schema
env:
MARIA_DB_PORT: ${{ job.services.mariadb.ports[3306] }}
run: DATABASE_URL=mysql://db:[email protected]:$MARIA_DB_PORT/db php bin/console doctrine:schema:validate
- name: Validate DB fixtures
env:
MARIA_DB_PORT: ${{ job.services.mariadb.ports[3306] }}
run: DATABASE_URL=mysql://db:[email protected]:$MARIA_DB_PORT/db php bin/console doctrine:fixtures:load --no-interaction