-
-
Notifications
You must be signed in to change notification settings - Fork 29
172 lines (146 loc) · 6.14 KB
/
ci-linux.yml
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
name: Galette CI
on:
push:
branches:
- master
- develop
- 'feature/*'
- 'hotfix/*'
- 'release/*'
pull_request:
jobs:
ubuntu-latest:
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: [ '8.1', '8.2' ]
coverage: ['none']
db-image: ['mysql:5.7', 'mysql:8.0', 'mariadb:10.2', 'mariadb:10.6', 'postgres:10', 'postgres:14']
include:
- php-versions: '8.1'
coverage: 'xdebug'
db-image: 'postgres:14'
fail-fast: false
env:
DB: ${{ matrix.db-image }}
services:
# Label used to access the service container
db:
# Docker Hub image
image: ${{ matrix.db-image }}
# Provide env variables for both mysql and pgsql
env:
POSTGRES_USER: galette_tests
POSTGRES_PASSWORD: g@l3tte
POSTGRES_DB: galette_tests
MYSQL_USER: galette_tests
MYSQL_PASSWORD: g@l3tte
MYSQL_ROOT_PASSWORD: g@l3tte
MYSQL_DATABASE: galette_tests
# Open network ports for both mysql and pgsql
ports:
- 3306:3306
- 5432:5432
# Set health checks to wait until postgres has started
options: >-
--health-cmd="bash -c 'if [[ -n $(command -v pg_isready) ]]; then pg_isready; else mysqladmin ping; fi'"
--health-interval=10s
--health-timeout=5s
--health-retries=10
name: PHP ${{ matrix.php-versions }} ${{ matrix.db-image }}
steps:
- name: PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
tools: composer, pecl
coverage: ${{ matrix.coverage }}
extensions: apcu
ini-values: apc.enable_cli=1
- name: "Show versions"
run: |
php --version
composer --version
echo "node $(node --version)"
echo "npm $(npm --version)"
docker exec ${{ job.services.db.id }} bash -c "if [[ -n \$(command -v psql) ]]; then psql --version; else mysql --version; fi"
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 2
- 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.json') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install dependencies
run: bin/install_deps
- name: CS
run: |
galette/vendor/bin/phpcs -n -p --ignore=galette_tcpdf_config.php --standard=phpcs-rules.xml galette/lib/ tests/TestsBootstrap.php tests/Galette tests/plugins galette/webroot/index.php galette/includes/
- name: Twig CS
run: |
galette/vendor/bin/twigcs galette/templates/default --severity error --display blocking
if: matrix.php-versions == '8.1'
- name: Install checker
working-directory: galette
run: composer require maglnet/composer-require-checker -W
if: matrix.php-versions == '8.1'
- name: Check missing symbols
run: |
galette/vendor/bin/composer-require-checker check --config-file=.composer-require-checker.config.json galette/composer.json
if: matrix.php-versions == '8.1'
- name: PHPStan checks
run: |
galette/vendor/bin/phpstan analyze --ansi --memory-limit=2G --no-interaction --no-progress
if: matrix.php-versions == '8.1'
- name: Init for PostgreSQL (update)
env:
POSTGRES_HOST: localhost
POSTGRES_PORT: 5432
run: |
PGPASSWORD=g@l3tte psql -d galette_tests -a -f tests/pgsql_06.sql -U galette_tests -h localhost
if: startsWith(matrix.db-image, 'postgres')
- name: Init for MariaDB (update)
run: |
mysql -e 'create database IF NOT EXISTS galette_tests;' -u galette_tests --password=g@l3tte -h 127.0.0.1 -P 3306
mysql -e 'use galette_tests; source tests/mysql_06.sql;' -u galette_tests --password=g@l3tte -h 127.0.0.1 -P 3306
if: startsWith(matrix.db-image, 'mysql') || startsWith(matrix.db-image, 'mariadb')
- name: Update database tests
run: UPDATE=UPDATE galette/vendor/bin/phpunit --test-suffix=.php --bootstrap tests/TestsBootstrap.php --no-coverage --process-isolation tests/GaletteUpdate/
if: matrix.coverage != 'xdebug'
- name: Init for PostgreSQL
env:
POSTGRES_HOST: localhost
POSTGRES_PORT: 5432
run: |
PGPASSWORD=g@l3tte psql -d galette_tests -a -f galette/install/scripts/pgsql.sql -U galette_tests -h localhost
if: startsWith(matrix.db-image, 'postgres')
- name: Init for MariaDB
run: |
mysql -e 'create database IF NOT EXISTS galette_tests;' -u galette_tests --password=g@l3tte -h 127.0.0.1 -P 3306
mysql -e 'use galette_tests; source galette/install/scripts/mysql.sql;' -u galette_tests --password=g@l3tte -h 127.0.0.1 -P 3306
if: startsWith(matrix.db-image, 'mysql') || startsWith(matrix.db-image, 'mariadb')
- name: Unit tests
run: galette/vendor/bin/phpunit --test-suffix=.php --bootstrap tests/TestsBootstrap.php --no-coverage --process-isolation tests/Galette/
if: matrix.coverage != 'xdebug'
- name: Unit tests (with coverage)
run: galette/vendor/bin/phpunit --test-suffix=.php --bootstrap tests/TestsBootstrap.php --process-isolation --coverage-filter galette/lib --coverage-clover tests/clover.xml tests/Galette/
if: matrix.coverage == 'xdebug'
- name: Upload code coverage (scrutinizer)
run: |
cd galette
composer require scrutinizer/ocular
cd ..
php galette/vendor/bin/ocular code-coverage:upload --format=php-clover tests/clover.xml
if: matrix.coverage == 'xdebug'
- name: Upload code coverage (codecov)
uses: codecov/codecov-action@v3
with:
file: tests/clover.xml
if: matrix.coverage == 'xdebug'