@@ -5,33 +5,45 @@ on: [push]
5
5
jobs :
6
6
composer :
7
7
runs-on : ubuntu-latest
8
+ strategy :
9
+ matrix :
10
+ php : [ 8.0, 8.1, 8.2 ]
8
11
9
12
steps :
10
- - uses : actions/checkout@v2
13
+ - uses : actions/checkout@v3
11
14
12
15
- name : Cache Composer dependencies
13
- uses : actions/cache@v2
16
+ uses : actions/cache@v3
14
17
with :
15
18
path : /tmp/composer-cache
16
19
key : ${{ runner.os }}-${{ hashFiles('**/composer.lock') }}
17
20
18
- - uses : php-actions/composer@v5
21
+ - name : Composer install
22
+ uses : php-actions/composer@v6
23
+ with :
24
+ php_version : ${{ matrix.php }}
19
25
20
26
- name : Archive build
21
27
run : mkdir /tmp/github-actions/ && tar -cvf /tmp/github-actions/build.tar ./
22
28
23
29
- name : Upload build archive for test runners
24
- uses : actions/upload-artifact@v2
30
+ uses : actions/upload-artifact@v3
25
31
with :
26
32
name : build-artifact
27
33
path : /tmp/github-actions
28
34
29
35
phpunit :
30
36
runs-on : ubuntu-latest
31
- needs : [composer]
37
+ needs : [ composer ]
38
+ strategy :
39
+ matrix :
40
+ php : [ 8.0, 8.1, 8.2 ]
41
+
42
+ outputs :
43
+ coverage : ${{ steps.store-coverage.outputs.coverage_text }}
32
44
33
45
steps :
34
- - uses : actions/download-artifact@v2
46
+ - uses : actions/download-artifact@v3
35
47
with :
36
48
name : build-artifact
37
49
path : /tmp/github-actions
@@ -40,19 +52,48 @@ jobs:
40
52
run : tar -xvf /tmp/github-actions/build.tar ./
41
53
42
54
- name : PHP Unit tests
43
- uses : php-actions/phpunit@v2
55
+ uses : php-actions/phpunit@v3
56
+ env :
57
+ XDEBUG_MODE : cover
44
58
with :
45
- php_version : 8.0
59
+ php_version : ${{ matrix.php }}
46
60
php_extensions : xdebug
47
- configuration : test/phpunit/phpunit.xml
48
- bootstrap : vendor/autoload.php
61
+ coverage_text : _coverage/coverage.txt
62
+ coverage_clover : _coverage/clover.xml
63
+
64
+ - name : Store coverage data
65
+ uses : actions/upload-artifact@v3
66
+ with :
67
+ name : code-coverage
68
+ path : _coverage
69
+
70
+ coverage :
71
+ runs-on : ubuntu-latest
72
+ needs : [ phpunit ]
73
+
74
+ steps :
75
+ - uses : actions/checkout@v3
76
+
77
+ - uses : actions/download-artifact@v3
78
+ with :
79
+ name : code-coverage
80
+ path : _coverage
81
+
82
+ - name : Output coverage
83
+ run : cat "_coverage/coverage.txt"
84
+
85
+ - name : Upload to Codecov
86
+ uses : codecov/codecov-action@v3
49
87
50
88
phpstan :
51
89
runs-on : ubuntu-latest
52
- needs : [composer]
90
+ needs : [ composer ]
91
+ strategy :
92
+ matrix :
93
+ php : [ 8.0, 8.1, 8.2 ]
53
94
54
95
steps :
55
- - uses : actions/download-artifact@v2
96
+ - uses : actions/download-artifact@v3
56
97
with :
57
98
name : build-artifact
58
99
path : /tmp/github-actions
@@ -61,6 +102,69 @@ jobs:
61
102
run : tar -xvf /tmp/github-actions/build.tar ./
62
103
63
104
- name : PHP Static Analysis
64
- uses : php-actions/phpstan@v2
105
+ uses : php-actions/phpstan@v3
106
+ with :
107
+ php_version : ${{ matrix.php }}
108
+ path : src/
109
+
110
+ phpmd :
111
+ runs-on : ubuntu-latest
112
+ needs : [ composer ]
113
+ strategy :
114
+ matrix :
115
+ php : [ 8.0, 8.1, 8.2 ]
116
+
117
+ steps :
118
+ - uses : actions/download-artifact@v3
119
+ with :
120
+ name : build-artifact
121
+ path : /tmp/github-actions
122
+
123
+ - name : Extract build archive
124
+ run : tar -xvf /tmp/github-actions/build.tar ./
125
+
126
+ - name : PHP Mess Detector
127
+ uses : php-actions/phpmd@v1
128
+ with :
129
+ php_version : ${{ matrix.php }}
130
+ path : src/
131
+ output : text
132
+ ruleset : phpmd.xml
133
+
134
+ phpcs :
135
+ runs-on : ubuntu-latest
136
+ needs : [ composer ]
137
+ strategy :
138
+ matrix :
139
+ php : [ 8.0, 8.1, 8.2 ]
140
+
141
+ steps :
142
+ - uses : actions/download-artifact@v3
143
+ with :
144
+ name : build-artifact
145
+ path : /tmp/github-actions
146
+
147
+ - name : Extract build archive
148
+ run : tar -xvf /tmp/github-actions/build.tar ./
149
+
150
+ - name : PHP Code Sniffer
151
+ uses : php-actions/phpcs@v1
65
152
with :
66
- path : src/
153
+ php_version : ${{ matrix.php }}
154
+ path : src/
155
+ standard : phpcs.xml
156
+
157
+ remove_old_artifacts :
158
+ runs-on : ubuntu-latest
159
+
160
+ steps :
161
+ - name : Remove old artifacts for prior workflow runs on this repository
162
+ env :
163
+ GH_TOKEN : ${{ github.token }}
164
+ run : |
165
+ gh api "/repos/${{ github.repository }}/actions/artifacts?name=build-artifact" | jq ".artifacts[] | select(.name == \"build-artifact\") | .id" > artifact-id-list.txt
166
+ while read id
167
+ do
168
+ echo -n "Deleting artifact ID $id ... "
169
+ gh api --method DELETE /repos/${{ github.repository }}/actions/artifacts/$id && echo "Done"
170
+ done <artifact-id-list.txt
0 commit comments