-
Notifications
You must be signed in to change notification settings - Fork 1
128 lines (117 loc) · 3.32 KB
/
ci.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
126
127
128
name: Continuous Integration
on:
push:
branches:
- 'main'
- '[0-9]+.x'
pull_request:
schedule:
- cron: "0 0 * * SAT"
workflow_call:
workflow_dispatch:
permissions:
contents: read
jobs:
settings:
name: Settings
uses: ./.github/workflows/settings.yml
dependencies:
name: Dependencies checks
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: ./.github/actions/php
- name: Check package versions
run: |
./vendor/bin/monorepo-builder validate
- name: Check unused packages
run: |
./vendor/bin/composer-unused
dependencies-package:
name: Dependencies checks
needs:
- settings
- dependencies
strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.settings.outputs.packages-names) }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: ./.github/actions/php
- name: Composer repositories
shell: bash
working-directory: ${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}
run: |
PACKAGES=$(echo '${{ needs.settings.outputs.packages-names }}' | jq 'map(select(. != "${{ matrix.package }}"))' | jq -c -r '.[]')
while read -r PKG
do
composer config "repositories.${PKG}" path "../${PKG}"
done <<< "${PACKAGES}"
- name: Install package dependencies
uses: ramsey/composer-install@v2
with:
working-directory: ${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}
- name: Check unused packages
working-directory: ${{ needs.settings.outputs.packages-directory }}/${{ matrix.package }}
run: |
../../vendor/bin/composer-unused
phpcs:
name: PHP CodeSniffer
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: ./.github/actions/php
- name: Execute
run: |
./vendor/bin/phpcs --report=checkstyle | cs2pr
phpstan:
name: PHPStan
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: ./.github/actions/php
- name: Execute
run: |
./vendor/bin/phpstan analyse
phpunit:
name: Tests
uses: ./.github/workflows/phpunit.yml
with:
runs-on: '["ubuntu-latest", "windows-latest"]'
phpunit-package:
name: Package tests
needs:
- settings
- phpunit
strategy:
fail-fast: false
matrix:
package: ${{ fromJson(needs.settings.outputs.packages-names) }}
uses: ./.github/workflows/phpunit.yml
with:
package: ${{ matrix.package }}
packages-names: ${{ needs.settings.outputs.packages-names }}
packages-directory: ${{ needs.settings.outputs.packages-directory }}
markdownlint:
name: Markdownlint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Node.js
uses: ./.github/actions/npm
- name: Setup problem matcher
uses: xt0rted/markdownlint-problem-matcher@v2
- name: Execute
run: |
npm run markdownlint