-
Notifications
You must be signed in to change notification settings - Fork 49
133 lines (114 loc) · 4.08 KB
/
run-test-suite.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
129
130
131
132
133
name: Unit
on:
workflow_call:
inputs:
test-command:
required: true
type: string
fail-fast:
required: false
type: boolean
default: true
test-timeout:
required: false
type: number
default: 15
download-binaries:
required: false
type: boolean
default: false
push:
branches:
- 'master'
- '2.*'
paths-ignore:
- 'README.md'
- '.gitignore'
- '.gitattributes'
- 'psalm.xml'
- 'psalm-baseline.xml'
- '.editorconfig'
pull_request:
paths-ignore:
- 'README.md'
- '.gitignore'
- '.gitattributes'
- 'psalm.xml'
- 'psalm-baseline.xml'
- '.editorconfig'
jobs:
test:
name: PHP${{ matrix.php }}${{ matrix.extensions-suffix }}, ${{ matrix.os }}, ${{ matrix.dependencies }} deps
runs-on: ${{ matrix.os }}
timeout-minutes: ${{ inputs.test-timeout }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strategy:
fail-fast: ${{ inputs.fail-fast }}
matrix:
php: [ 8.1, 8.2, 8.3, 8.4 ]
os: [ ubuntu-latest ]
extensions-suffix: [ '', ', protobuf' ]
dependencies: [ lowest , highest ]
include:
- os: windows-latest
extensions-suffix: ', protobuf'
php: 8.1
dependencies: highest
steps:
- name: Set Git To Use LF
run: |
git config --global core.autocrlf false
git config --global core.eol lf
- name: Setup PHP ${{ matrix.php }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
tools: composer:v2
extensions: dom, sockets, grpc, curl ${{ matrix.extensions-suffix }}
# extensions: dom, sockets, grpc, curl
- name: Check Out Code
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Validate composer.json and composer.lock
run: composer validate --strict
- name: Download CPX (PHP 8.4)
if: inputs.download-binaries == true && matrix.php == '8.4'
run: composer global require cpx/cpx
- name: Get Composer Cache Directory
id: composer-cache
run: |
echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache Composer Dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: php-${{ matrix.php }}-${{ matrix.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
php-${{ matrix.php }}-${{ matrix.os }}-composer-
- name: Install lowest dependencies from composer.json
if: matrix.dependencies == 'lowest' && matrix.php != '8.4'
run: composer update --no-interaction --no-progress --prefer-lowest
- name: Install lowest dependencies from composer.json ignoring ext-php constraint (PHP 8.4)
if: matrix.dependencies == 'lowest' && matrix.php == '8.4'
run: composer update --no-interaction --no-progress --prefer-lowest --ignore-platform-req php
- name: Validate lowest dependencies
if: matrix.dependencies == 'lowest' && matrix.php == '8.1'
env:
COMPOSER_POOL_OPTIMIZER: 0
run: vendor/bin/validate-prefer-lowest
- name: Install highest dependencies from composer.json
if: matrix.dependencies == 'highest' && matrix.php != '8.4'
run: composer update --no-interaction --no-progress
- name: Install highest dependencies from composer.json ignoring ext-php constraint (PHP 8.4)
if: matrix.dependencies == 'highest' && matrix.php == '8.4'
run: composer update --no-interaction --no-progress --ignore-platform-req php
- name: Download binaries
if: inputs.download-binaries == true && matrix.php != '8.4'
run: composer get:binaries
- name: Download binaries (PHP 8.4)
if: inputs.download-binaries == true && matrix.php == '8.4'
run: cpx internal/dload get --no-interaction
- name: Run tests
run: ${{ inputs.test-command }}