@@ -5,36 +5,45 @@ on: [push]
5
5
jobs :
6
6
composer :
7
7
runs-on : ubuntu-latest
8
+ strategy :
9
+ matrix :
10
+ php : [ 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
21
- name : Composer install
19
22
uses : php-actions/composer@v6
20
23
with :
21
- php_version : ' 8.1 '
24
+ php_version : ${{ matrix.php }}
22
25
23
26
- name : Archive build
24
27
run : mkdir /tmp/github-actions/ && tar -cvf /tmp/github-actions/build.tar ./
25
28
26
29
- name : Upload build archive for test runners
27
- uses : actions/upload-artifact@v2
30
+ uses : actions/upload-artifact@v3
28
31
with :
29
32
name : build-artifact
30
33
path : /tmp/github-actions
31
34
32
35
phpunit :
33
36
runs-on : ubuntu-latest
34
- needs : [composer]
37
+ needs : [ composer ]
38
+ strategy :
39
+ matrix :
40
+ php : [ 8.1, 8.2 ]
41
+
42
+ outputs :
43
+ coverage : ${{ steps.store-coverage.outputs.coverage_text }}
35
44
36
45
steps :
37
- - uses : actions/download-artifact@v2
46
+ - uses : actions/download-artifact@v3
38
47
with :
39
48
name : build-artifact
40
49
path : /tmp/github-actions
@@ -44,8 +53,118 @@ jobs:
44
53
45
54
- name : PHP Unit tests
46
55
uses : php-actions/phpunit@v3
56
+ env :
57
+ XDEBUG_MODE : cover
47
58
with :
48
- php_version : ' 8.1 '
59
+ php_version : ${{ matrix.php }}
49
60
php_extensions : xdebug
50
- configuration : test/phpunit/phpunit.xml
51
- 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
87
+
88
+ phpstan :
89
+ runs-on : ubuntu-latest
90
+ needs : [ composer ]
91
+ strategy :
92
+ matrix :
93
+ php : [ 8.1, 8.2 ]
94
+
95
+ steps :
96
+ - uses : actions/download-artifact@v3
97
+ with :
98
+ name : build-artifact
99
+ path : /tmp/github-actions
100
+
101
+ - name : Extract build archive
102
+ run : tar -xvf /tmp/github-actions/build.tar ./
103
+
104
+ - name : PHP Static Analysis
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.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.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
152
+ with :
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