Skip to content

Commit 0a81e45

Browse files
author
Greg Bowler
authored
ci: improve ci with qa tools and matrix builds (#54)
closes #51
1 parent 72a015b commit 0a81e45

16 files changed

+1491
-838
lines changed

.github/workflows/ci.yml

Lines changed: 110 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ on: [push]
55
jobs:
66
composer:
77
runs-on: ubuntu-latest
8+
strategy:
9+
matrix:
10+
php: [ 8.0, 8.1, 8.2 ]
811

912
steps:
1013
- uses: actions/checkout@v3
@@ -15,7 +18,10 @@ jobs:
1518
path: /tmp/composer-cache
1619
key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }}
1720

18-
- uses: php-actions/composer@v6
21+
- name: Composer install
22+
uses: php-actions/composer@v6
23+
with:
24+
php_version: ${{ matrix.php }}
1925

2026
- name: Archive build
2127
run: mkdir /tmp/github-actions/ && tar -cvf /tmp/github-actions/build.tar ./
@@ -28,7 +34,13 @@ jobs:
2834

2935
phpunit:
3036
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 }}
3244

3345
steps:
3446
- uses: actions/download-artifact@v3
@@ -41,15 +53,44 @@ jobs:
4153

4254
- name: PHP Unit tests
4355
uses: php-actions/phpunit@v3
56+
env:
57+
XDEBUG_MODE: cover
4458
with:
45-
php_version: 8.0
59+
php_version: ${{ matrix.php }}
4660
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
4987

5088
phpstan:
5189
runs-on: ubuntu-latest
52-
needs: [composer]
90+
needs: [ composer ]
91+
strategy:
92+
matrix:
93+
php: [ 8.0, 8.1, 8.2 ]
5394

5495
steps:
5596
- uses: actions/download-artifact@v3
@@ -63,4 +104,67 @@ jobs:
63104
- name: PHP Static Analysis
64105
uses: php-actions/phpstan@v3
65106
with:
107+
php_version: ${{ matrix.php }}
66108
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
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

composer.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
"php": ">=8.1"
88
},
99
"require-dev": {
10-
"phpstan/phpstan": "1.8.0",
11-
"phpunit/phpunit": "9.5.21"
10+
"phpstan/phpstan": "^1.10",
11+
"phpunit/phpunit": "^10.1",
12+
"phpmd/phpmd": "^2.13",
13+
"squizlabs/php_codesniffer": "^3.7"
1214
},
1315

1416
"autoload": {

0 commit comments

Comments
 (0)