-
Notifications
You must be signed in to change notification settings - Fork 14
125 lines (104 loc) · 4.2 KB
/
packages.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
name: Packages
on:
push: ~
pull_request: ~
# push:
# branches-ignore:
# - 'dependabot/**'
# paths:
# - "src/Monofony/Bridge/**"
# - "src/Monofony/Bundle/**"
# - "src/Monofony/Component/**"
# - "src/Monofony/Contracts/**"
# - "src/Monofony/Pack/**"
# pull_request:
# paths:
# - "src/Monofony/Bridge/**"
# - "src/Monofony/Bundle/**"
# - "src/Monofony/Component/**"
# - "src/Monofony/Contracts/**"
# - "src/Monofony/Pack/**"
release:
types: [created]
schedule:
-
cron: "0 1 * * 6" # Run at 1am every Saturday
workflow_dispatch: ~
jobs:
list:
runs-on: ubuntu-latest
name: "Create a list of packages"
steps:
-
uses: actions/checkout@v2
-
name: "Provide the list"
id: create-list
run: echo "::set-output name=packages::$(find src/Monofony -mindepth 3 -maxdepth 3 -type f -name composer.json -exec dirname '{}' \; | sed -e 's/src\/Monofony\///g' | sort | jq --raw-input . | jq --slurp . | jq -c .)"
outputs:
packages: "${{ steps.create-list.outputs.packages }}"
test:
needs: list
runs-on: ubuntu-latest
name: "${{ matrix.package }}, PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}"
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
php: ["8.1"]
symfony: ["~6.1.0", "~6.2.0"]
package: "${{ fromJson(needs.list.outputs.packages) }}"
include:
- php: "8.2"
symfony: "~6.2.0"
steps:
-
uses: actions/checkout@v2
-
name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "${{ matrix.php }}"
coverage: none
-
name: Get Composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
-
name: Cache Composer
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-php-${{ matrix.php }}-package-${{ matrix.package }}-composer-${{ hashFiles(format('src/Monofony/{0}/composer.json', matrix.package)) }}
restore-keys: |
${{ runner.os }}-php-${{ matrix.php }}-package-${{ matrix.package }}-composer-
${{ runner.os }}-php-${{ matrix.php }}-package-
-
name: Restrict Symfony version
if: matrix.symfony != ''
run: |
composer global config --no-plugins allow-plugins.symfony/flex true
composer global require --no-progress --no-scripts --no-plugins "symfony/flex:^2.0"
composer config extra.symfony.require "${{ matrix.symfony }}"
working-directory: "src/Monofony/${{ matrix.package }}"
-
name: Validate composer.json
if: ${{ true != contains( matrix.package, 'Pack' ) }}
run: composer validate --ansi --strict
working-directory: "src/Monofony/${{ matrix.package }}"
-
name: Install dependencies
run: composer install --ansi --no-interaction
env:
COMPOSER_ROOT_VERSION: dev-master
working-directory: "src/Monofony/${{ matrix.package }}"
-
name: Check phpstan.neon existence
id: check_phpstan_files
uses: andstor/file-existence-action@v1
with:
files: "src/Monofony/${{ matrix.package }}/phpstan.neon"
-
name: Run PHPStan
if: steps.check_phpstan_files.outputs.files_exists == 'true'
run: make test-package-phpstan path=src/Monofony/${{ matrix.package }}