-
Notifications
You must be signed in to change notification settings - Fork 2
155 lines (145 loc) · 4.37 KB
/
php.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
name: PHP
on:
workflow_dispatch:
pull_request:
paths:
- '**/*.php'
- '*.dist'
- composer.json
- composer.lock
- symfony.lock
- infection.json5
- .php-cs-fixer.dist.php
- phpstan.neon
- .github/workflows/php.yml
push:
paths:
- '**/*.php'
- '*.dist'
- composer.json
- composer.lock
- symfony.lock
- infection.json5
- .php-cs-fixer.dist.php
- phpstan.neon
- .github/workflows/php.yml
branches:
- trunk
jobs:
ecs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-php
- name: Run ECS
run: composer ecs
phpstan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-php
- name: Generate PHPStan cache
run: php bin/console cache:clear
- name: Run PHPStan
run: composer phpstan
phpunit-unit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-php
- name: Run PHPUnit
run: composer phpunit:unit -- --coverage-clover=coverage.xml
- name: Codecov
uses: codecov/codecov-action@v4
with:
files: ./coverage.xml
phpunit-integration:
runs-on: ubuntu-latest
services:
mariadb:
image: mariadb:10.5
env:
MARIADB_ROOT_PASSWORD: swagbraintree
MYSQL_DATABASE: swagbraintree_test
ports: ['3306:3306']
env:
DATABASE_URL: mysql://root:[email protected]:3306/swagbraintree
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-php
- name: Setup database
run: composer setup:test
- name: Run PHPUnit
run: composer phpunit:integration -- --coverage-clover=coverage.xml
- name: Codecov
uses: codecov/codecov-action@v5
with:
files: ./coverage.xml
phpunit-application:
runs-on: ubuntu-latest
needs: [phpstan, phpunit-unit, phpunit-integration]
services:
mariadb:
image: mariadb:10.5
env:
MARIADB_ROOT_PASSWORD: swagbraintree
MYSQL_DATABASE: swagbraintree_test
ports: [ '3306:3306' ]
env:
DATABASE_URL: mysql://root:[email protected]:3306/swagbraintree
BRAINTREE_TEST_ENVIRONMENT: sandbox
BRAINTREE_TEST_MERCHANT_ID: ${{ secrets.BRAINTREE_TEST_MERCHANT_ID }}
BRAINTREE_TEST_MERCHANT_ACCOUNT_ID: ${{ secrets.BRAINTREE_TEST_MERCHANT_ACCOUNT_ID }}
BRAINTREE_TEST_PUBLIC_KEY: ${{ secrets.BRAINTREE_TEST_PUBLIC_KEY }}
BRAINTREE_TEST_PRIVATE_KEY: ${{ secrets.BRAINTREE_TEST_PRIVATE_KEY }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-php
- name: Setup database
run: composer setup:test
- name: Run PHPUnit
continue-on-error: true
run: composer phpunit:application -- --coverage-clover=coverage.xml
- name: Codecov
if: steps.phpunit-application.outcome == 'success' && steps.phpunit-application.conclusion == 'success'
uses: codecov/codecov-action@v4
with:
files: ./coverage.xml
infection:
runs-on: ubuntu-latest
services:
mariadb:
image: mariadb:10.5
env:
MARIADB_ROOT_PASSWORD: swagbraintree
MYSQL_DATABASE: swagbraintree_test
ports: ['3306:3306']
env:
DATABASE_URL: mysql://root:[email protected]:3306/swagbraintree
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-php
- name: Setup database
run: composer setup:test
- name: Run Infection
run: composer infection -- --min-msi=95
env:
INFECTION_DASHBOARD_API_KEY: ${{ secrets.INFECTION_DASHBOARD_API_KEY }}
doctrine:
runs-on: ubuntu-latest
services:
mariadb:
image: mariadb:10.5
env:
MARIADB_ROOT_PASSWORD: swagbraintree
MYSQL_DATABASE: swagbraintree
ports: ['3306:3306']
env:
DATABASE_URL: mysql://root:[email protected]:3306/swagbraintree
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-php
- name: Migrate database
run: bin/console doctrine:migrations:migrate --no-interaction
- name: Validate doctrine schema
run: bin/console doctrine:schema:validate --verbose