-
Notifications
You must be signed in to change notification settings - Fork 21
135 lines (113 loc) · 3.26 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
129
130
131
132
133
134
135
name: Continuous Integration
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
check-composer-validation:
name: Composer validation
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Composer Validate
uses: docker://composer:2.7.1
with:
args: validate
check-cs:
name: Coding Standards
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/install
with:
php-version: "8.3"
need_phar: 'false'
- name: PHP CS Fixer
run: bin/castor cs
phpstan:
name: Static Analysis
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/install
with:
php-version: "8.3"
need_phar: 'false'
- name: PHPStan
run: bin/castor phpstan
phpunit:
name: "PHPUnit on ${{ matrix.php }} / Castor from ${{ matrix.castor.method }}"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- php: "8.1"
castor:
bin: 'bin/castor'
method: 'bin/castor'
- php: "8.1"
castor:
bin: 'tools/phar/build/castor.linux-amd64.phar'
method: 'phar'
- php: "8.1"
castor:
bin: 'castor'
method: 'static'
- php: "8.2"
castor:
bin: 'bin/castor'
method: 'bin/castor'
- php: "8.3"
castor:
bin: 'bin/castor'
method: 'bin/castor'
- php: "8.4"
castor:
bin: 'bin/castor'
method: 'bin/castor'
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/install
with:
php-version: "${{ matrix.php }}"
- uses: ./.github/actions/cache
- name: Build Castor phar for Linux
run: bin/castor castor:phar:linux
if: matrix.castor.method == 'phar' || matrix.castor.method == 'static'
- name: Compile Custom Built PHP along Castor phar for Linux
run: |
set -e
bin/castor castor:static:linux
mv castor.linux-amd64 ${{ github.workspace }}/${{ matrix.castor.bin }}
if: matrix.castor.method == 'static'
# We use box in a test, so we need to make it available everywhere
- name: Link box
run: sudo ln -s $GITHUB_WORKSPACE/tools/phar/vendor/bin/box /usr/local/bin/box
- name: Install PHPUnit
run: vendor/bin/simple-phpunit install
- name: Run tests
run: vendor/bin/simple-phpunit
env:
CASTOR_BIN: ${{ github.workspace }}/${{ matrix.castor.bin }}
artifacts:
name: Ensure artifacts are OK
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/install
with:
composer-flags: "--no-dev"
- uses: ./.github/actions/cache
- uses: ./.github/actions/phar
- uses: ./.github/actions/static
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}