Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 34 additions & 28 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ jobs:
env:
S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }}
S3_PREFIX: ${{ inputs.S3_PREFIX || matrix.stack.prefix }}
S3_REGION: ${{ secrets.S3_REGION || 'us-east-1' }}
BUILDPACK: ./vendor/heroku/heroku-buildpack-php
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
Expand All @@ -30,11 +31,6 @@ jobs:
fail-fast: false
matrix:
stack:
- name: "heroku-22"
arch: "amd64"
prefix: "dist-heroku-22-develop/"
upstream: "dist-heroku-22-stable/"
os: "ubuntu-latest"
- name: "heroku-24"
arch: "amd64"
prefix: "dist-heroku-24-amd64-develop/"
Expand All @@ -45,31 +41,41 @@ jobs:
prefix: "dist-heroku-24-arm64-develop/"
upstream: "dist-heroku-24-arm64-stable/"
os: "ubuntu-24.04-arm"
- name: "heroku-26"
arch: "amd64"
prefix: "dist-heroku-26-amd64-develop/"
upstream: "dist-heroku-26-amd64-stable/"
os: "ubuntu-latest"
- name: "heroku-26"
arch: "arm64"
prefix: "dist-heroku-26-arm64-develop/"
upstream: "dist-heroku-26-arm64-stable/"
os: "ubuntu-24.04-arm"
series:
- { 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.21.0"], swoole: ["4.8.13", "5.1.8", "6.1.7"], openswoole: ["4.12.1", "22.1.2"] }
- { 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.21.0"], swoole: ["4.8.13", "5.1.8", "6.1.7"], openswoole: ["22.1.2", "25.2.0", "26.2.0"] }
- { 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.21.0"], swoole: ["5.1.8", "6.1.7"], openswoole: ["22.1.2", "25.2.0", "26.2.0"] }
- { 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.21.0"], swoole: ["6.1.7"], openswoole: ["25.2.0", "26.2.0"] }
- { 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.21.0"], swoole: ["6.2.0RC1"], openswoole: ["26.2.0"] }
- { 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.21.0"], swoole: ["4.8.13", "5.1.8", "6.1.7"], openswoole: ["4.12.1", "22.1.2"] }
- { 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.21.0"], swoole: ["4.8.13", "5.1.8", "6.1.7"], openswoole: ["22.1.2", "25.2.0", "26.2.0"] }
- { 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.21.0"], swoole: ["5.1.8", "6.1.7"], openswoole: ["22.1.2", "25.2.0", "26.2.0"] }
- { 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.21.0"], swoole: ["6.1.7"], openswoole: ["25.2.0", "26.2.0"] }
- { 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.21.0"], swoole: ["6.2.1"], openswoole: ["26.2.0"] }
exclude:
# heroku-24 no longer supports php-8.1
- stack:
name: "heroku-24"
series:
version: 20210902
include:
# heroku-24 cannot compile openswoole 4.12.1 anymore, include for heroku-22 only
php: "8.1"
# heroku-26 no longer supports php-8.1, 8.2, 8.3
- stack:
name: "heroku-22"
arch: "amd64"
prefix: "dist-heroku-22-develop/"
upstream: "dist-heroku-22-stable/"
os: "ubuntu-latest"
name: "heroku-26"
series:
version: 20220829
php: "8.1"
- stack:
name: "heroku-26"
series:
php: "8.2"
openswoole:
- "4.12.1"
- stack:
name: "heroku-26"
series:
php: "8.3"

steps:
- name: Checkout
Expand Down Expand Up @@ -98,7 +104,7 @@ jobs:
for (const { tag_name, prerelease, draft } of data) {
const m = !prerelease && !draft && tag_name.match(re);
if (!m) continue;
const res = await fetch(`https://lang-php.s3.amazonaws.com/${prefix}php-${m[1]}.tar.gz`, { method: 'HEAD' });
const res = await fetch(`https://heroku-buildpack-php.s3.amazonaws.com/${prefix}php-${m[1]}.tar.gz`, { method: 'HEAD' });
if (res.ok) { core.exportVariable('PHP_VERSION', m[1]); break; }
}

Expand All @@ -112,35 +118,35 @@ jobs:
run: ./scripts/build-lib.sh ${{ matrix.stack.name }} zstd "${{ matrix.series.zstd }}" true

- name: Build igbinary extension
run: ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} igbinary "${{ matrix.series.igbinary }}" "php-${{ env.PHP_VERSION }}" ${{ matrix.stack.upstream }} true
run: ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} igbinary "${{ matrix.series.igbinary }}" "php-${{ env.PHP_VERSION }}" ${{ matrix.stack.upstream }} true

- name: Build msgpack extension
run: ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} msgpack "${{ matrix.series.msgpack }}" "php-${{ env.PHP_VERSION }}" ${{ matrix.stack.upstream }} true
run: ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} msgpack "${{ matrix.series.msgpack }}" "php-${{ env.PHP_VERSION }}" ${{ matrix.stack.upstream }} true

- name: Build redis extensions
run: |
set -e
for VERSION in ${{ join(matrix.series.redis, ' ') }}; do
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} redis "$VERSION" "php-${{ env.PHP_VERSION }},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.upstream }} true
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} redis "$VERSION" "php-${{ env.PHP_VERSION }},liblzf-*,lz4-*,zstd-*,ext-igbinary-*_php-${{ matrix.series.php }},ext-msgpack-*_php-${{ matrix.series.php }}" ${{ matrix.stack.upstream }} true
done

- name: Build relay extension
run: |
set -e
for VERSION in ${{ join(matrix.series.relay, ' ') }}; do
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} relay "$VERSION" "php-${{ env.PHP_VERSION }},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.upstream }} true
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} relay "$VERSION" "php-${{ env.PHP_VERSION }},liblzf-*,lz4-*,zstd-*,ext-igbinary-*_php-${{ matrix.series.php }},ext-msgpack-*_php-${{ matrix.series.php }}" ${{ matrix.stack.upstream }} true
done

- name: Build swoole extension
run: |
set -e
for VERSION in ${{ join(matrix.series.swoole, ' ') }}; do
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} swoole "$VERSION" "php-${{ env.PHP_VERSION }}" ${{ matrix.stack.upstream }} true
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} swoole "$VERSION" "php-${{ env.PHP_VERSION }}" ${{ matrix.stack.upstream }} true
done

- name: Build openswoole extension
run: |
set -e
for VERSION in ${{ join(matrix.series.openswoole, ' ') }}; do
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} openswoole "$VERSION" "php-${{ env.PHP_VERSION }}" ${{ matrix.stack.upstream }} true
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} openswoole "$VERSION" "php-${{ env.PHP_VERSION }}" ${{ matrix.stack.upstream }} true
done
17 changes: 12 additions & 5 deletions .github/workflows/mkrepo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,6 @@ jobs:
strategy:
matrix:
stack:
- name: "heroku-22"
stable: "dist-heroku-22-stable/"
develop: "dist-heroku-22-develop/"
os: "ubuntu-latest"
- name: "heroku-24"
stable: "dist-heroku-24-amd64-stable/"
develop: "dist-heroku-24-amd64-develop/"
Expand All @@ -43,11 +39,22 @@ jobs:
stable: "dist-heroku-24-arm64-stable/"
develop: "dist-heroku-24-arm64-develop/"
os: "ubuntu-24.04-arm"
- name: "heroku-26"
stable: "dist-heroku-26-amd64-stable/"
develop: "dist-heroku-26-amd64-develop/"
os: "ubuntu-latest"
- name: "heroku-26"
stable: "dist-heroku-26-arm64-stable/"
develop: "dist-heroku-26-arm64-develop/"
os: "ubuntu-24.04-arm"

env:
S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }}
S3_PREFIX: ${{ inputs.S3_PREFIX || matrix.stack.develop }}
S3_REGION: ${{ secrets.S3_REGION || 'us-east-1' }}
BUILDPACK: ./vendor/heroku/heroku-buildpack-php
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

steps:
- name: Checkout
Expand All @@ -71,5 +78,5 @@ jobs:
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
docker run --rm \
--env-file=${BUILDPACK}/support/build/_docker/env.default \
--env-file=${BUILDPACK}/support/build/docker/env.default \
${{ matrix.stack.name }} mkrepo.sh --upload
20 changes: 14 additions & 6 deletions .github/workflows/sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@ jobs:
strategy:
matrix:
stack:
- name: "heroku-22"
arch: "amd64"
stable: "dist-heroku-22-stable/"
develop: "dist-heroku-22-develop/"
os: "ubuntu-latest"
- name: "heroku-24"
arch: "amd64"
stable: "dist-heroku-24-amd64-stable/"
Expand All @@ -35,10 +30,23 @@ jobs:
stable: "dist-heroku-24-arm64-stable/"
develop: "dist-heroku-24-arm64-develop/"
os: "ubuntu-24.04-arm"
- name: "heroku-26"
arch: "amd64"
stable: "dist-heroku-26-amd64-stable/"
develop: "dist-heroku-26-amd64-develop/"
os: "ubuntu-latest"
- name: "heroku-26"
arch: "arm64"
stable: "dist-heroku-26-arm64-stable/"
develop: "dist-heroku-26-arm64-develop/"
os: "ubuntu-24.04-arm"

env:
S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }}
BUILDPACK: ./vendor/heroku/heroku-buildpack-php
S3_REGION: ${{ secrets.S3_REGION || 'us-east-1' }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

steps:
- name: Checkout
Expand All @@ -63,5 +71,5 @@ jobs:
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
echo "yes" | docker run --rm -i \
--env-file=${BUILDPACK}/support/build/_docker/env.default \
--env-file=${BUILDPACK}/support/build/docker/env.default \
${{ matrix.stack.name }} sync.sh $S3_BUCKET ${{ matrix.stack.stable }} $S3_BUCKET ${{ matrix.stack.develop }}
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [3.1.0] - 2026-06-11
- Added `heroku-26` stack support
- Added Swoole v6.2.1

### Changed
- Adapted build workflow according to latest changes done in [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php/pull/907)

### Removed
- Dropped `heroku-22` stack support
Comment thread
tillkruss marked this conversation as resolved.

## [3.0.0] - 2026-03-05

### Added
Expand Down Expand Up @@ -112,6 +122,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Initial release

[Unreleased]: https://github.com/cachewerk/heroku-php-extensions/compare/v3.0.0...HEAD
[3.1.0]: https://github.com/cachewerk/heroku-php-extensions/compare/v3.0.1...v3.1.0
[3.0.0]: https://github.com/cachewerk/heroku-php-extensions/compare/v2.0.1...v3.0.0
[2.0.1]: https://github.com/cachewerk/heroku-php-extensions/compare/v2.0.0...v2.0.1
[2.0.0]: https://github.com/cachewerk/heroku-php-extensions/compare/v1.2.6...v2.0.0
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,22 +95,22 @@ Create a custom Dockerfile for `heroku-24`.
./scripts/build-lib.sh heroku-24 zstd 1.4.9

# Build igbinary
./scripts/build-extension.sh heroku-24 8.4 20240924 igbinary 3.2.16 "php-8.4.*" "dist-heroku-24-amd64-stable/"
./scripts/build-extension.sh heroku-24 8.4 igbinary 3.2.16 "php-8.4.*" "dist-heroku-24-amd64-stable/"

# Build msgpack
./scripts/build-extension.sh heroku-24 8.4 20240924 msgpack 2.2.0 "php-8.4.*" "dist-heroku-24-amd64-stable/"
./scripts/build-extension.sh heroku-24 8.4 msgpack 2.2.0 "php-8.4.*" "dist-heroku-24-amd64-stable/"

# Build phpredis (has extra dependencies, libraries need to be "deployed" already)
./scripts/build-extension.sh heroku-24 8.4 20240924 redis 6.3.0 "php-8.4.*,libraries/liblzf-*,libraries/lz4-*,libraries/zstd-*,extensions/no-debug-non-zts-20240924/igbinary-*,extensions/no-debug-non-zts-20240924/msgpack-*" "dist-heroku-24-amd64-stable/"
./scripts/build-extension.sh heroku-24 8.4 redis 6.3.0 "php-8.4.*,liblzf-*,lz4-*,zstd-*,ext-igbinary-*_php-8.4,ext-msgpack-*_php-8.4" "dist-heroku-24-amd64-stable/"

# Build relay (has extra dependencies, libraries need to be "deployed" already)
./scripts/build-extension.sh heroku-24 8.4 20240924 relay 0.20.0 "php-8.4.*,libraries/liblzf-*,libraries/lz4-*,libraries/zstd-*,extensions/no-debug-non-zts-20240924/igbinary-*,extensions/no-debug-non-zts-20240924/msgpack-*" "dist-heroku-24-amd64-stable/"
./scripts/build-extension.sh heroku-24 8.4 relay 0.20.0 "php-8.4.*,liblzf-*,lz4-*,zstd-*,ext-igbinary-*_php-8.4,ext-msgpack-*_php-8.4" "dist-heroku-24-amd64-stable/"

# Build swoole
./scripts/build-extension.sh heroku-24 8.4 20240924 swoole 6.1.7 "php-8.4.*" "dist-heroku-24-amd64-stable/"
./scripts/build-extension.sh heroku-24 8.4 swoole 6.1.7 "php-8.4.*" "dist-heroku-24-amd64-stable/"

# Build openswoole
./scripts/build-extension.sh heroku-24 8.4 20240924 openswoole 25.2.0 "php-8.4.*" "dist-heroku-24-amd64-stable/"
./scripts/build-extension.sh heroku-24 8.4 openswoole 25.2.0 "php-8.4.*" "dist-heroku-24-amd64-stable/"
```
### Versions

Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"type": "library",
"license": "MIT",
"require": {
"php": "^8.3",
"php": "^8.4",
"ext-igbinary": "*",
"ext-msgpack": "*",
"ext-redis": "*",
Expand Down
16 changes: 8 additions & 8 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions extensions/igbinary
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env bash

dep_name=$(basename $BASH_SOURCE)
dep_name=ext-igbinary

source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl
source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/formulae/include/pecl-ext
4 changes: 2 additions & 2 deletions extensions/msgpack
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env bash

dep_name=$(basename $BASH_SOURCE)
dep_name=ext-msgpack

source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl
source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/formulae/include/pecl-ext
4 changes: 2 additions & 2 deletions extensions/openswoole
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env bash

dep_name=$(basename $BASH_SOURCE)
dep_name=ext-openswoole

CONFIGURE_EXTRA="--enable-swoole-json --enable-swoole-curl --enable-http2 --enable-sockets --enable-mysqlnd --enable-openssl --with-postgres"

source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl
source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/formulae/include/pecl-ext
4 changes: 2 additions & 2 deletions extensions/redis
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash

dep_name=$(basename $BASH_SOURCE)
dep_name=ext-redis

series=$(/app/.heroku/php/bin/php-config --version | cut -d. -f1,2)

Expand All @@ -10,4 +10,4 @@ CONFIGURE_EXTRA="--enable-redis-igbinary --enable-redis-msgpack --enable-redis-l

MANIFEST_REQUIRE="${MANIFEST_REQUIRE:-"{\"heroku-sys/php\":\"${series}.*\",\"heroku-sys/liblzf\":\"*\",\"heroku-sys/lz4\":\"*\",\"heroku-sys/zstd\":\"*\",\"heroku-sys/ext-json\":\"*\",\"heroku-sys/ext-igbinary\":\"*\",\"heroku-sys/ext-msgpack\":\"*\"}"}"

source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/extensions/pecl
source $(dirname $BASH_SOURCE)/../vendor/heroku/heroku-buildpack-php/support/build/formulae/include/pecl-ext
Loading
Loading