Skip to content

Commit d9c806c

Browse files
committed
Reworked GitHub workflow script
1 parent 26d3864 commit d9c806c

File tree

3 files changed

+123
-50
lines changed

3 files changed

+123
-50
lines changed

.github/workflows/build.yml

Lines changed: 62 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ name: build
22
on: [push, pull_request]
33

44
jobs:
5-
full-build:
6-
name: "Coding standards & coverage tests"
5+
quality-check:
6+
name: "Coding standards & test coverage"
77
runs-on: ${{ matrix.operating-system }}
88
strategy:
99
matrix:
@@ -35,16 +35,12 @@ jobs:
3535
coverage: pcov
3636
extensions: ${{ env.extensions }}
3737
ini-values: assert.exception=1, zend.assertions=1
38-
- name: "Validate composer.json"
39-
run: composer validate
40-
- name: "Setup composer cache"
41-
uses: actions/cache@v3
38+
- name: "Install Composer dependencies"
39+
uses: ramsey/composer-install@v2
4240
with:
43-
path: ~/.composer/cache
44-
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
45-
restore-keys: ${{ runner.os }}-composer-
46-
- name: "Install highest dependencies"
47-
run: composer update --no-interaction --no-ansi --no-progress --no-suggest --prefer-stable
41+
dependency-versions: highest
42+
composer-options: --prefer-stable
43+
custom-cache-key: composer-${{ runner.os }}-php${{ matrix.php-versions }}-${{ hashFiles('**/composer.json') }}
4844
- name: "Coding standard Php-CS-Fixer checks"
4945
run: vendor/bin/php-cs-fixer --dry-run -v --config=cs-fixer.php.dist --path-mode=intersection fix src tests
5046
- name: "Coding standard CodeSniffer checks"
@@ -55,21 +51,22 @@ jobs:
5551
run: php polymorphine-skeleton check
5652
- name: "Run PhpUnit tests with coverage"
5753
run: |
58-
mkdir -p build/logs
59-
vendor/bin/phpunit --exclude-group integrated --coverage-clover build/logs/clover.xml
54+
mkdir -p .dev/logs
55+
vendor/bin/phpunit --coverage-clover .dev/logs/clover.xml
6056
- name: "Send coverage report to coveralls.io"
61-
run: vendor/bin/php-coveralls -v
57+
run: |
58+
composer require php-coveralls/php-coveralls
59+
vendor/bin/php-coveralls -v -o .dev/logs/coveralls-upload.json -x .dev/logs/clover.xml
6260
env:
63-
COVERALLS_RUN_LOCALLY: 1
6461
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
6562

66-
php-os-builds:
67-
name: "PHP 8 tests"
63+
platform-compatibility:
64+
name: "Operating systems"
6865
runs-on: ${{ matrix.operating-system }}
6966
strategy:
7067
matrix:
7168
operating-system: ['ubuntu-latest', 'windows-latest', 'macos-latest']
72-
php-versions: ['8.0', '8.1', '8.2']
69+
php-versions: ['8.2']
7370
env:
7471
extensions: dom, json, libxml, mbstring, pdo_sqlite, soap, xml, xmlwriter
7572
key: cache-v3
@@ -98,13 +95,53 @@ jobs:
9895
coverage: none
9996
extensions: ${{ env.extensions }}
10097
ini-values: assert.exception=1, zend.assertions=1
101-
- name: "Setup composer cache"
98+
- name: "Install Composer dependencies"
99+
uses: ramsey/composer-install@v2
100+
with:
101+
dependency-versions: highest
102+
composer-options: --prefer-stable
103+
custom-cache-key: composer-${{ runner.os }}-php${{ matrix.php-versions }}-${{ hashFiles('**/composer.json') }}
104+
- name: "Run PhpUnit tests (no coverage)"
105+
run: vendor/bin/phpunit --no-coverage
106+
107+
php-versions:
108+
name: "PHP versions"
109+
runs-on: ${{ matrix.operating-system }}
110+
strategy:
111+
matrix:
112+
operating-system: ['ubuntu-latest']
113+
php-versions: ['8.0', '8.1', '8.2']
114+
env:
115+
extensions: dom, json, libxml, mbstring, pdo_sqlite, soap, xml, xmlwriter
116+
key: cache-v3
117+
steps:
118+
- name: "Checkout"
119+
uses: actions/checkout@v3
120+
- name: "Setup PHP extensions cache environment"
121+
id: cache-env
122+
uses: shivammathur/cache-extensions@v1
123+
with:
124+
php-version: ${{ matrix.php-versions }}
125+
extensions: ${{ env.extensions }}
126+
key: ${{ env.key }}
127+
- name: "Cache PHP extensions"
102128
uses: actions/cache@v3
103129
with:
104-
path: ~/.composer/cache
105-
key: ${{ runner.os }}-php${{ matrix.php-versions }}-composer-${{ hashFiles('**/composer.json') }}
106-
restore-keys: ${{ runner.os }}-php${{ matrix.php-versions }}-composer-
107-
- name: "Install highest dependencies"
108-
run: composer update --no-interaction --no-ansi --no-progress --no-suggest --prefer-stable
130+
path: ${{ steps.cache-env.outputs.dir }}
131+
key: ${{ steps.cache-env.outputs.key }}
132+
restore-keys: ${{ steps.cache-env.outputs.key }}
133+
- name: "Install PHP with extensions"
134+
uses: shivammathur/setup-php@v2
135+
with:
136+
php-version: ${{ matrix.php-versions }}
137+
coverage: none
138+
extensions: ${{ env.extensions }}
139+
ini-values: assert.exception=1, zend.assertions=1
140+
- name: "Install Composer dependencies"
141+
uses: ramsey/composer-install@v2
142+
with:
143+
dependency-versions: highest
144+
composer-options: --prefer-stable
145+
custom-cache-key: composer-${{ runner.os }}-php${{ matrix.php-versions }}-${{ hashFiles('**/composer.json') }}
109146
- name: "Run PhpUnit tests (no coverage)"
110-
run: vendor/bin/phpunit --exclude-group integrated --no-coverage
147+
run: vendor/bin/phpunit --no-coverage

composer.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
"friendsofphp/php-cs-fixer": "3.9.*",
1616
"squizlabs/php_codesniffer": "^3.7.1",
1717
"phpunit/phpunit": "^9.5.21",
18-
"php-coveralls/php-coveralls": "^2.5.2",
1918
"shudd3r/skeletons": "^1.0.0"
2019
},
2120
"autoload": {

template/.github/workflows/build.yml

Lines changed: 61 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ name: build
22
on: [push, pull_request]
33

44
jobs:
5-
full-build:
6-
name: "Coding standards & coverage tests"
5+
quality-check:
6+
name: "Coding standards & test coverage"
77
runs-on: ${{ matrix.operating-system }}
88
strategy:
99
matrix:
@@ -35,16 +35,12 @@ jobs:
3535
coverage: pcov
3636
extensions: ${{ env.extensions }}
3737
ini-values: assert.exception=1, zend.assertions=1
38-
- name: "Validate composer.json"
39-
run: composer validate
40-
- name: "Setup composer cache"
41-
uses: actions/cache@v3
38+
- name: "Install Composer dependencies"
39+
uses: ramsey/composer-install@v2
4240
with:
43-
path: ~/.composer/cache
44-
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
45-
restore-keys: ${{ runner.os }}-composer-
46-
- name: "Install highest dependencies"
47-
run: composer update --no-interaction --no-ansi --no-progress --no-suggest --prefer-stable
41+
dependency-versions: highest
42+
composer-options: --prefer-stable
43+
custom-cache-key: composer-${{ runner.os }}-php${{ matrix.php-versions }}-${{ hashFiles('**/composer.json') }}
4844
- name: "Coding standard Php-CS-Fixer checks"
4945
run: vendor/bin/php-cs-fixer --dry-run -v --config=cs-fixer.php.dist --path-mode=intersection fix src tests
5046
- name: "Coding standard CodeSniffer checks"
@@ -55,21 +51,22 @@ jobs:
5551
run: ${tpl.PHP_EXEC}polymorphine-skeleton check
5652
- name: "Run PhpUnit tests with coverage"
5753
run: |
58-
mkdir -p build/logs
59-
vendor/bin/phpunit{original.content} --coverage-clover build/logs/clover.xml
54+
mkdir -p .dev/logs
55+
vendor/bin/phpunit{original.content} --coverage-clover .dev/logs/clover.xml
6056
- name: "Send coverage report to coveralls.io"
61-
run: vendor/bin/php-coveralls -v
57+
run: |
58+
composer require php-coveralls/php-coveralls
59+
vendor/bin/php-coveralls -v -o .dev/logs/coveralls-upload.json -x .dev/logs/clover.xml
6260
env:
63-
COVERALLS_RUN_LOCALLY: 1
6461
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
6562

66-
php-os-builds:
67-
name: "PHP 8 tests"
63+
platform-compatibility:
64+
name: "Operating systems"
6865
runs-on: ${{ matrix.operating-system }}
6966
strategy:
7067
matrix:
7168
operating-system: ['ubuntu-latest', 'windows-latest', 'macos-latest']
72-
php-versions: ['8.0', '8.1', '8.2']
69+
php-versions: ['8.2']
7370
env:
7471
extensions: dom, json, libxml, mbstring, pdo_sqlite, soap, xml, xmlwriter{original.content}
7572
key: cache-v3
@@ -98,13 +95,53 @@ jobs:
9895
coverage: none
9996
extensions: ${{ env.extensions }}
10097
ini-values: assert.exception=1, zend.assertions=1
101-
- name: "Setup composer cache"
98+
- name: "Install Composer dependencies"
99+
uses: ramsey/composer-install@v2
100+
with:
101+
dependency-versions: highest
102+
composer-options: --prefer-stable
103+
custom-cache-key: composer-${{ runner.os }}-php${{ matrix.php-versions }}-${{ hashFiles('**/composer.json') }}
104+
- name: "Run PhpUnit tests (no coverage)"
105+
run: vendor/bin/phpunit{original.content} --no-coverage
106+
107+
php-versions:
108+
name: "PHP versions"
109+
runs-on: ${{ matrix.operating-system }}
110+
strategy:
111+
matrix:
112+
operating-system: ['ubuntu-latest']
113+
php-versions: ['8.0', '8.1', '8.2']
114+
env:
115+
extensions: dom, json, libxml, mbstring, pdo_sqlite, soap, xml, xmlwriter{original.content}
116+
key: cache-v3
117+
steps:
118+
- name: "Checkout"
119+
uses: actions/checkout@v3
120+
- name: "Setup PHP extensions cache environment"
121+
id: cache-env
122+
uses: shivammathur/cache-extensions@v1
123+
with:
124+
php-version: ${{ matrix.php-versions }}
125+
extensions: ${{ env.extensions }}
126+
key: ${{ env.key }}
127+
- name: "Cache PHP extensions"
102128
uses: actions/cache@v3
103129
with:
104-
path: ~/.composer/cache
105-
key: ${{ runner.os }}-php${{ matrix.php-versions }}-composer-${{ hashFiles('**/composer.json') }}
106-
restore-keys: ${{ runner.os }}-php${{ matrix.php-versions }}-composer-
107-
- name: "Install highest dependencies"
108-
run: composer update --no-interaction --no-ansi --no-progress --no-suggest --prefer-stable
130+
path: ${{ steps.cache-env.outputs.dir }}
131+
key: ${{ steps.cache-env.outputs.key }}
132+
restore-keys: ${{ steps.cache-env.outputs.key }}
133+
- name: "Install PHP with extensions"
134+
uses: shivammathur/setup-php@v2
135+
with:
136+
php-version: ${{ matrix.php-versions }}
137+
coverage: none
138+
extensions: ${{ env.extensions }}
139+
ini-values: assert.exception=1, zend.assertions=1
140+
- name: "Install Composer dependencies"
141+
uses: ramsey/composer-install@v2
142+
with:
143+
dependency-versions: highest
144+
composer-options: --prefer-stable
145+
custom-cache-key: composer-${{ runner.os }}-php${{ matrix.php-versions }}-${{ hashFiles('**/composer.json') }}
109146
- name: "Run PhpUnit tests (no coverage)"
110147
run: vendor/bin/phpunit{original.content} --no-coverage

0 commit comments

Comments
 (0)