Skip to content

Commit 3106d13

Browse files
authored
Extract install steps to a reusable action (#77)
* Extract install steps to a reusable action * Checkout first * Handle coverage mode * Fixed action path * Fixed action path * Fixed action path * Fixed reusable action
1 parent c2a74d8 commit 3106d13

File tree

2 files changed

+54
-91
lines changed

2 files changed

+54
-91
lines changed

.github/actions/install/action.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Prepare env & install dependencies
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
php-version:
7+
required: true
8+
type: string
9+
symfony-version:
10+
required: true
11+
type: string
12+
coverage-mode:
13+
required: false
14+
type: string
15+
default: 'none'
16+
secrets:
17+
token:
18+
required: true
19+
20+
runs:
21+
using: "composite"
22+
steps:
23+
- name: "Setup PHP"
24+
uses: shivammathur/setup-php@v2
25+
with:
26+
coverage: ${{ inputs.coverage-mode }}
27+
php-version: ${{ inputs.php-version }}
28+
- name: "Install dependencies with composer"
29+
shell: bash
30+
run: |
31+
composer require --quiet --no-update "symfony/console:${{ inputs.symfony-version }}"
32+
composer require --quiet --no-update "symfony/filesystem:${{ inputs.symfony-version }}"
33+
composer require --quiet --no-update "symfony/framework-bundle:${{ inputs.symfony-version }}"
34+
composer require --quiet --no-update "symfony/messenger:${{ inputs.symfony-version }}"
35+
composer require --quiet --no-update "symfony/process:${{ inputs.symfony-version }}"
36+
composer require --quiet --no-update "symfony/serializer:${{ inputs.symfony-version }}"
37+
composer require --quiet --no-update "symfony/validator:${{ inputs.symfony-version }}"
38+
composer update --no-interaction --no-progress --no-suggest

.github/workflows/tests.yml

Lines changed: 16 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ jobs:
1010
phpunit:
1111
name: "PHPUnit"
1212
runs-on: ubuntu-latest
13-
1413
strategy:
1514
matrix:
1615
include:
@@ -22,135 +21,61 @@ jobs:
2221
symfony-version: 5.4.*
2322
- php-version: 8.2
2423
symfony-version: 6.2.*
25-
2624
steps:
2725
- name: "Checkout"
2826
uses: actions/checkout@v2
29-
30-
- name: "Setup PHP"
31-
uses: shivammathur/setup-php@v2
27+
- name: "Setup env & install dependencies"
28+
uses: ./.github/actions/install
3229
with:
33-
coverage: none
3430
php-version: ${{ matrix.php-version }}
35-
36-
- name: "Install dependencies with composer"
37-
run: |
38-
composer require --quiet --no-update "symfony/console:${{ matrix.symfony-version }}"
39-
composer require --quiet --no-update "symfony/filesystem:${{ matrix.symfony-version }}"
40-
composer require --quiet --no-update "symfony/framework-bundle:${{ matrix.symfony-version }}"
41-
composer require --quiet --no-update "symfony/messenger:${{ matrix.symfony-version }}"
42-
composer require --quiet --no-update "symfony/process:${{ matrix.symfony-version }}"
43-
composer require --quiet --no-update "symfony/serializer:${{ matrix.symfony-version }}"
44-
composer require --quiet --no-update "symfony/validator:${{ matrix.symfony-version }}"
45-
composer update --no-interaction --no-progress --no-suggest
46-
31+
symfony-version: ${{ matrix.symfony-version }}
4732
- name: "Run tests with phpunit/phpunit"
4833
run: vendor/bin/phpunit
4934

5035
phpstan:
5136
name: "PhpStan"
5237
runs-on: ubuntu-latest
53-
54-
strategy:
55-
matrix:
56-
include:
57-
- php-version: 8.2
58-
symfony-version: 6.2.*
59-
6038
steps:
6139
- name: "Checkout"
6240
uses: actions/checkout@v2
63-
64-
- name: "Setup PHP"
65-
uses: shivammathur/setup-php@v2
41+
- name: "Setup env & install dependencies"
42+
uses: ./.github/actions/install
6643
with:
67-
coverage: none
68-
php-version: ${{ matrix.php-version }}
69-
70-
- name: "Install dependencies with composer"
71-
run: |
72-
composer require --quiet --no-update "symfony/console:${{ matrix.symfony-version }}"
73-
composer require --quiet --no-update "symfony/filesystem:${{ matrix.symfony-version }}"
74-
composer require --quiet --no-update "symfony/framework-bundle:${{ matrix.symfony-version }}"
75-
composer require --quiet --no-update "symfony/messenger:${{ matrix.symfony-version }}"
76-
composer require --quiet --no-update "symfony/process:${{ matrix.symfony-version }}"
77-
composer require --quiet --no-update "symfony/serializer:${{ matrix.symfony-version }}"
78-
composer require --quiet --no-update "symfony/validator:${{ matrix.symfony-version }}"
79-
composer update --no-interaction --no-progress --no-suggest
80-
44+
php-version: '8.2'
45+
symfony-version: '6.2.*'
8146
- name: "Run static analyzis with phpstan/phpstan"
8247
run: vendor/bin/phpstan analyze
8348

8449
checkstyke:
8550
name: "Checkstyle"
8651
runs-on: ubuntu-latest
87-
88-
strategy:
89-
matrix:
90-
include:
91-
- php-version: 8.2
92-
symfony-version: 6.2.*
93-
9452
steps:
9553
- name: "Checkout"
9654
uses: actions/checkout@v2
97-
98-
- name: "Setup PHP"
99-
uses: shivammathur/setup-php@v2
55+
- name: "Setup env & install dependencies"
56+
uses: ./.github/actions/install
10057
with:
101-
coverage: none
102-
php-version: ${{ matrix.php-version }}
103-
104-
- name: "Install dependencies with composer"
105-
run: |
106-
composer require --quiet --no-update "symfony/console:${{ matrix.symfony-version }}"
107-
composer require --quiet --no-update "symfony/filesystem:${{ matrix.symfony-version }}"
108-
composer require --quiet --no-update "symfony/framework-bundle:${{ matrix.symfony-version }}"
109-
composer require --quiet --no-update "symfony/messenger:${{ matrix.symfony-version }}"
110-
composer require --quiet --no-update "symfony/process:${{ matrix.symfony-version }}"
111-
composer require --quiet --no-update "symfony/serializer:${{ matrix.symfony-version }}"
112-
composer require --quiet --no-update "symfony/validator:${{ matrix.symfony-version }}"
113-
composer update --no-interaction --no-progress --no-suggest
114-
58+
php-version: '8.2'
59+
symfony-version: '6.2.*'
11560
- name: "Run checkstyle with squizlabs/php_codesniffer"
11661
run: vendor/bin/phpcs
11762

11863
codecov:
11964
name: "Code coverage"
12065
runs-on: ubuntu-latest
121-
122-
strategy:
123-
matrix:
124-
include:
125-
- php-version: 8.2
126-
symfony-version: 6.2.*
127-
12866
steps:
12967
- name: "Checkout"
13068
uses: actions/checkout@v2
131-
132-
- name: "Setup PHP"
133-
uses: shivammathur/setup-php@v2
69+
- name: "Setup env & install dependencies"
70+
uses: ./.github/actions/install
13471
with:
135-
coverage: xdebug
136-
php-version: ${{ matrix.php-version }}
137-
138-
- name: "Install dependencies with composer"
139-
run: |
140-
composer require --quiet --no-update "symfony/console:${{ matrix.symfony-version }}"
141-
composer require --quiet --no-update "symfony/filesystem:${{ matrix.symfony-version }}"
142-
composer require --quiet --no-update "symfony/framework-bundle:${{ matrix.symfony-version }}"
143-
composer require --quiet --no-update "symfony/messenger:${{ matrix.symfony-version }}"
144-
composer require --quiet --no-update "symfony/process:${{ matrix.symfony-version }}"
145-
composer require --quiet --no-update "symfony/serializer:${{ matrix.symfony-version }}"
146-
composer require --quiet --no-update "symfony/validator:${{ matrix.symfony-version }}"
147-
composer update --no-interaction --no-progress --no-suggest
148-
72+
php-version: '8.2'
73+
symfony-version: '6.2.*'
74+
coverage-mode: 'xdebug'
14975
- name: "Run tests with phpunit/phpunit"
15076
env:
15177
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
15278
run: |
15379
vendor/bin/phpunit --coverage-clover coverage.xml
154-
15580
- name: "Upload coverage to Codecov"
15681
uses: codecov/codecov-action@v1

0 commit comments

Comments
 (0)