Skip to content

Commit d3b0175

Browse files
authored
Upgrade to v3.x (#38)
* heroku-22, heroku-24, php 8.1 - 8.5 with latest (#32) - Drops (unsupported) heroku-20 stack - Adds heroku-24 stack - Adds php 8.4 (20240924) - Adds php 8.5 (20250925) - Refactor build process - Fixed undefined array key warnings in openswoole/swoole card templates (#39) Co-authored-by: tillkruss <665029+tillkruss@users.noreply.github.com>
1 parent 65d9003 commit d3b0175

66 files changed

Lines changed: 373 additions & 553 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,5 @@ S3_BUCKET=<heroku-php-extensions>
22
S3_PREFIX=<dist-heroku-22-develop/>
33
S3_REGION=s3
44

5-
UPSTREAM_S3_BUCKET=lang-php
6-
UPSTREAM_S3_PREFIX=dist-heroku-22-stable/
7-
85
AWS_ACCESS_KEY_ID=<your-access-key>
96
AWS_SECRET_ACCESS_KEY=<your-access-secret>

.github/workflows/build.yml

Lines changed: 74 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,68 @@
1-
21
name: Build extensions
32

43
on:
54
push:
6-
branches:
7-
- main
5+
branches: [main]
6+
workflow_dispatch:
7+
workflow_call:
8+
inputs:
9+
S3_PREFIX:
10+
type: string
11+
default: ""
812

913
jobs:
10-
1114
build:
12-
name: Build and deploy
13-
runs-on: ubuntu-latest
15+
name: Build and deploy ${{ matrix.stack.name }} extensions with PHP ${{ matrix.series.php }} on ${{ matrix.stack.os }}
16+
runs-on: ${{ matrix.stack.os }}
1417
timeout-minutes: 20
15-
1618
env:
17-
S3_BUCKET: heroku-php-extensions
19+
S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }}
20+
S3_REGION: ${{ secrets.S3_REGION || '' }}
21+
S3_PREFIX: ${{ inputs.S3_PREFIX || matrix.stack.prefix }}
1822
BUILDPACK: ./vendor/heroku/heroku-buildpack-php
1923
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
2024
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
2125

2226
strategy:
27+
fail-fast: true
2328
matrix:
2429
stack:
25-
- heroku-20
26-
- heroku-22
30+
- name: "heroku-22"
31+
prefix: "dist-heroku-22-develop/"
32+
os: "ubuntu-latest"
33+
- name: "heroku-24"
34+
prefix: "dist-heroku-24-amd64-develop/"
35+
os: "ubuntu-latest"
36+
- name: "heroku-24"
37+
prefix: "dist-heroku-24-arm64-develop/"
38+
os: "ubuntu-24.04-arm"
2739
series:
28-
- 20210902 # PHP 8.1
29-
- 20220829 # PHP 8.2
30-
- 20230831 # PHP 8.3
40+
- {version: 20210902, php: "8.1", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: ["5.3.7", "6.3.0"], relay: ["0.6.8"], swoole: ["4.8.13", "5.1.8", "6.1.7"], openswoole: ["4.12.1", "22.1.2"]}
41+
- {version: 20220829, php: "8.2", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: ["5.3.7", "6.3.0"], relay: ["0.6.8"], swoole: ["4.8.13", "5.1.8", "6.1.7"], openswoole: ["22.1.2", "25.2.0", "26.2.0"]}
42+
- {version: 20230831, php: "8.3", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: ["5.3.7", "6.3.0"], relay: ["0.6.8", "0.20.0"], swoole: ["5.1.8", "6.1.7"], openswoole: ["22.1.2", "25.2.0", "26.2.0"]}
43+
- {version: 20240924, php: "8.4", liblzf: "3.6", lz4: "1.9.3", zstd: "1.4.9", igbinary: "3.2.15", msgpack: "2.2.0", redis: ["6.3.0"], relay: ["0.20.0"], swoole: ["6.1.7"], openswoole: ["25.2.0", "26.2.0"]}
44+
- {version: 20250925, php: "8.5", liblzf: "3.6", lz4: "1.10.0", zstd: "1.5.7", igbinary: "3.2.17RC1", msgpack: "2.2.0", redis: ["6.3.0"], relay: ["0.20.0"], swoole: ["6.2.0RC1"], openswoole: ["26.2.0"]}
45+
exclude:
46+
# heroku-24 no longer supports php-8.1
47+
- stack:
48+
name: "heroku-24"
49+
series:
50+
version: 20210902
51+
include:
52+
# heroku-24 cannot compile openswoole 4.12.1 anymore, include for heroku-22 only
53+
- stack:
54+
name: "heroku-22"
55+
prefix: "dist-heroku-22-develop/"
56+
os: "ubuntu-latest"
57+
series:
58+
version: 20220829
59+
php: "8.2"
60+
openswoole:
61+
- "4.12.1"
3162

3263
steps:
3364
- name: Checkout
34-
uses: actions/checkout@v3
65+
uses: actions/checkout@v4
3566

3667
- name: Composer Install
3768
run: composer install --prefer-dist --no-progress --no-suggest --ignore-platform-reqs
@@ -40,114 +71,50 @@ jobs:
4071
run: cp ${BUILDPACK}/requirements.txt .
4172

4273
- name: Build Dockerfile
43-
run: |
44-
cat ${BUILDPACK}/support/build/_docker/${{ matrix.stack }}.Dockerfile > docker/build/${{ matrix.stack }}.Dockerfile
45-
cat docker/${{ matrix.stack }}.Dockerfile >> docker/build/${{ matrix.stack }}.Dockerfile
74+
run: ./scripts/create-dockerfile.sh ${{ matrix.stack.name }}
4675

4776
- name: Docker build
48-
run: docker build --pull --tag ${{ matrix.stack }} --file docker/build/${{ matrix.stack }}.Dockerfile .
77+
run: ./scripts/build-dockerfile.sh ${{ matrix.stack.name }}
4978

5079
- name: Build liblzf library
51-
shell: 'script -q -e -c "bash {0}"'
52-
run: |
53-
docker run --rm -ti \
54-
--env-file=${BUILDPACK}/support/build/_docker/env.default \
55-
${{ matrix.stack }} deploy.sh --overwrite libraries/liblzf-3.6
80+
run: ./scripts/build-lib.sh ${{ matrix.stack.name }} liblzf "${{ matrix.series.liblzf }}" true
5681

5782
- name: Build lz4 library
58-
shell: 'script -q -e -c "bash {0}"'
59-
run: |
60-
docker run --rm -ti \
61-
--env-file=${BUILDPACK}/support/build/_docker/env.default \
62-
${{ matrix.stack }} deploy.sh --overwrite libraries/lz4-1.9.3
83+
run: ./scripts/build-lib.sh ${{ matrix.stack.name }} lz4 "${{ matrix.series.lz4 }}" true
6384

6485
- name: Build zstd library
65-
shell: 'script -q -e -c "bash {0}"'
66-
run: |
67-
docker run --rm -ti \
68-
--env-file=${BUILDPACK}/support/build/_docker/env.default \
69-
${{ matrix.stack }} deploy.sh --overwrite libraries/zstd-1.4.9
86+
run: ./scripts/build-lib.sh ${{ matrix.stack.name }} zstd "${{ matrix.series.zstd }}" true
7087

7188
- name: Build igbinary extension
72-
shell: 'script -q -e -c "bash {0}"'
73-
run: |
74-
docker run --rm -ti \
75-
--env UPSTREAM_S3_BUCKET=lang-php \
76-
--env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \
77-
--env-file=${BUILDPACK}/support/build/_docker/env.default \
78-
${{ matrix.stack }} deploy.sh --overwrite \
79-
extensions/no-debug-non-zts-${{ matrix.series }}/igbinary-3.2.15
89+
run: ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} igbinary "${{ matrix.series.igbinary }}" "php-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true
8090

8191
- name: Build msgpack extension
82-
shell: 'script -q -e -c "bash {0}"'
83-
run: |
84-
docker run --rm -ti \
85-
--env UPSTREAM_S3_BUCKET=lang-php \
86-
--env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \
87-
--env-file=${BUILDPACK}/support/build/_docker/env.default \
88-
${{ matrix.stack }} deploy.sh --overwrite \
89-
extensions/no-debug-non-zts-${{ matrix.series }}/msgpack-2.2.0
90-
91-
- name: Build redis extension
92-
shell: 'script -q -e -c "bash {0}"'
92+
run: ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} msgpack "${{ matrix.series.msgpack }}" "php-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true
93+
94+
- name: Build redis extensions
9395
run: |
94-
docker run --rm -ti \
95-
--env UPSTREAM_S3_BUCKET=lang-php \
96-
--env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \
97-
--env-file=${BUILDPACK}/support/build/_docker/env.default \
98-
${{ matrix.stack }} deploy.sh --overwrite \
99-
extensions/no-debug-non-zts-${{ matrix.series }}/redis-6.0.2
96+
set -e
97+
for VERSION in ${{ join(matrix.series.redis, ' ') }}; do
98+
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} redis "$VERSION" "php-${{ matrix.series.php }}.*,libraries/liblzf-*,libraries/lz4-*,libraries/zstd-*,extensions/no-debug-non-zts-${{ matrix.series.version }}/igbinary-*,extensions/no-debug-non-zts-${{ matrix.series.version }}/msgpack-*" ${{ matrix.stack.prefix }} true
99+
done
100100
101101
- name: Build relay extension
102-
shell: 'script -q -e -c "bash {0}"'
103-
run: |
104-
docker run --rm -ti \
105-
--env UPSTREAM_S3_BUCKET=lang-php \
106-
--env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \
107-
--env-file=${BUILDPACK}/support/build/_docker/env.default \
108-
${{ matrix.stack }} deploy.sh --overwrite \
109-
extensions/no-debug-non-zts-${{ matrix.series }}/relay-0.6.8
110-
111-
- name: Build swoole 4.x extension
112-
if: matrix.series <= 20220829
113-
shell: 'script -q -e -c "bash {0}"'
114102
run: |
115-
docker run --rm -ti \
116-
--env UPSTREAM_S3_BUCKET=lang-php \
117-
--env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \
118-
--env-file=${BUILDPACK}/support/build/_docker/env.default \
119-
${{ matrix.stack }} deploy.sh --overwrite \
120-
extensions/no-debug-non-zts-${{ matrix.series }}/swoole-4.8.13
121-
122-
- name: Build swoole 5.x extension
123-
if: matrix.series >= 20230831
124-
shell: 'script -q -e -c "bash {0}"'
125-
run: |
126-
docker run --rm -ti \
127-
--env UPSTREAM_S3_BUCKET=lang-php \
128-
--env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \
129-
--env-file=${BUILDPACK}/support/build/_docker/env.default \
130-
${{ matrix.stack }} deploy.sh --overwrite \
131-
extensions/no-debug-non-zts-${{ matrix.series }}/swoole-5.1.1
132-
133-
- name: Build openswoole 4.x extension
134-
if: matrix.series <= 20220829
135-
shell: 'script -q -e -c "bash {0}"'
103+
set -e
104+
for VERSION in ${{ join(matrix.series.relay, ' ') }}; do
105+
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} relay "$VERSION" "php-${{ matrix.series.php }}.*,libraries/liblzf-*,libraries/lz4-*,libraries/zstd-*,extensions/no-debug-non-zts-${{ matrix.series.version }}/igbinary-*,extensions/no-debug-non-zts-${{ matrix.series.version }}/msgpack-*" ${{ matrix.stack.prefix }} true
106+
done
107+
108+
- name: Build swoole extension
136109
run: |
137-
docker run --rm -ti \
138-
--env UPSTREAM_S3_BUCKET=lang-php \
139-
--env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \
140-
--env-file=${BUILDPACK}/support/build/_docker/env.default \
141-
${{ matrix.stack }} deploy.sh --overwrite \
142-
extensions/no-debug-non-zts-${{ matrix.series }}/openswoole-4.12.1
143-
144-
- name: Build openswoole 22.x extension
145-
if: matrix.series >= 20230831
146-
shell: 'script -q -e -c "bash {0}"'
110+
set -e
111+
for VERSION in ${{ join(matrix.series.swoole, ' ') }}; do
112+
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} swoole "$VERSION" "php-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true
113+
done
114+
115+
- name: Build openswoole extension
147116
run: |
148-
docker run --rm -ti \
149-
--env UPSTREAM_S3_BUCKET=lang-php \
150-
--env UPSTREAM_S3_PREFIX=dist-${{ matrix.stack }}-stable/ \
151-
--env-file=${BUILDPACK}/support/build/_docker/env.default \
152-
${{ matrix.stack }} deploy.sh --overwrite \
153-
extensions/no-debug-non-zts-${{ matrix.series }}/openswoole-22.1.0
117+
set -e
118+
for VERSION in ${{ join(matrix.series.openswoole, ' ') }}; do
119+
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} openswoole "$VERSION" "php-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true
120+
done

.github/workflows/mkrepo.yml

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ on:
99
- main
1010
types:
1111
- completed
12+
workflow_call:
13+
inputs:
14+
S3_PREFIX:
15+
type: string
16+
default: ""
1217

1318
jobs:
1419

@@ -22,16 +27,28 @@ jobs:
2227
strategy:
2328
matrix:
2429
stack:
25-
- heroku-20
26-
- heroku-22
30+
- name: "heroku-22"
31+
stable: "dist-heroku-22-stable/"
32+
develop: "dist-heroku-22-develop/"
33+
os: "ubuntu-latest"
34+
- name: "heroku-24"
35+
stable: "dist-heroku-24-amd64-stable/"
36+
develop: "dist-heroku-24-amd64-develop/"
37+
os: "ubuntu-latest"
38+
- name: "heroku-24"
39+
stable: "dist-heroku-24-arm64-stable/"
40+
develop: "dist-heroku-24-arm64-develop/"
41+
os: "ubuntu-24.04-arm"
2742

2843
env:
29-
S3_BUCKET: heroku-php-extensions
44+
S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }}
45+
S3_REGION: ${{ secrets.S3_REGION || '' }}
46+
S3_PREFIX: ${{ inputs.S3_PREFIX || matrix.stack.develop }}
3047
BUILDPACK: ./vendor/heroku/heroku-buildpack-php
3148

3249
steps:
3350
- name: Checkout
34-
uses: actions/checkout@v3
51+
uses: actions/checkout@v4
3552

3653
- name: Composer Install
3754
run: composer install --prefer-dist --no-progress --no-suggest --ignore-platform-reqs
@@ -40,19 +57,16 @@ jobs:
4057
run: cp ${BUILDPACK}/requirements.txt .
4158

4259
- name: Build Dockerfile
43-
run: |
44-
cat ${BUILDPACK}/support/build/_docker/${{ matrix.stack }}.Dockerfile > docker/build/${{ matrix.stack }}.Dockerfile
45-
cat docker/${{ matrix.stack }}.Dockerfile >> docker/build/${{ matrix.stack }}.Dockerfile
46-
60+
run: ./scripts/create-dockerfile.sh ${{ matrix.stack.name }}
61+
4762
- name: Docker build
48-
run: docker build --pull --tag ${{ matrix.stack }} --file docker/build/${{ matrix.stack }}.Dockerfile .
63+
run: ./scripts/build-dockerfile.sh ${{ matrix.stack.name }}
4964

5065
- name: Make and upload repository
51-
shell: 'script -q -e -c "bash {0}"'
5266
env:
5367
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
5468
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
5569
run: |
56-
docker run --rm -ti \
70+
docker run --rm \
5771
--env-file=${BUILDPACK}/support/build/_docker/env.default \
58-
${{ matrix.stack }} mkrepo.sh --upload
72+
${{ matrix.stack.name }} mkrepo.sh --upload

0 commit comments

Comments
 (0)