From db4cdceca4a4685381289e5ce67cbf8dbe90eb40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Till=20Kr=C3=BCss?= Date: Thu, 5 Mar 2026 14:02:46 -0800 Subject: [PATCH 1/8] Simplify job name in build workflow --- .github/workflows/build.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2e09eca..e00d24c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ on: jobs: build: - name: Build and deploy ${{ matrix.stack.name }} extensions with PHP ${{ matrix.series.php }} on ${{ matrix.stack.os }} + name: Build PHP ${{ matrix.series.php }} for ${{ matrix.stack.name }} runs-on: ${{ matrix.stack.os }} timeout-minutes: 20 env: @@ -37,11 +37,11 @@ jobs: prefix: "dist-heroku-24-arm64-develop/" 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.6.8"], 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.6.8"], 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.6.8", "0.20.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.20.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.20.0"], swoole: ["6.2.0RC1"], openswoole: ["26.2.0"]} + - { 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"] } + - { 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"] } + - { 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"] } + - { 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"] } + - { 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"] } exclude: # heroku-24 no longer supports php-8.1 - stack: @@ -117,4 +117,4 @@ jobs: 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-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true - done \ No newline at end of file + done From e02d4b9d24123e8e67df40938d2e6a8cf8d8a0a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Till=20Kru=CC=88ss?= Date: Thu, 5 Mar 2026 14:22:49 -0800 Subject: [PATCH 2/8] Simplify job name in build workflow --- .github/workflows/mkrepo.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/mkrepo.yml b/.github/workflows/mkrepo.yml index fb5c69f..e3bd2f2 100644 --- a/.github/workflows/mkrepo.yml +++ b/.github/workflows/mkrepo.yml @@ -18,7 +18,7 @@ on: jobs: mkrepo: - name: Make repository + name: Make repository (${{ matrix.stack.name }}, ${{ inputs.S3_PREFIX || matrix.stack.develop }}) runs-on: ubuntu-latest timeout-minutes: 20 @@ -58,7 +58,7 @@ jobs: - name: Build Dockerfile run: ./scripts/create-dockerfile.sh ${{ matrix.stack.name }} - + - name: Docker build run: ./scripts/build-dockerfile.sh ${{ matrix.stack.name }} From a2bf6ebe48ad817afdb8915db56528c183e02071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Till=20Kru=CC=88ss?= Date: Thu, 5 Mar 2026 14:25:42 -0800 Subject: [PATCH 3/8] attempt to fix upstream --- .github/workflows/build.yml | 16 ++++++++++------ scripts/build-extension.sh | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e00d24c..7fbda0d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,12 +29,15 @@ jobs: stack: - name: "heroku-22" prefix: "dist-heroku-22-develop/" + upstream: "dist-heroku-22-stable/" os: "ubuntu-latest" - name: "heroku-24" prefix: "dist-heroku-24-amd64-develop/" + upstream: "dist-heroku-24-amd64-stable/" os: "ubuntu-latest" - name: "heroku-24" prefix: "dist-heroku-24-arm64-develop/" + upstream: "dist-heroku-24-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.6.8"], swoole: ["4.8.13", "5.1.8", "6.1.7"], openswoole: ["4.12.1", "22.1.2"] } @@ -53,6 +56,7 @@ jobs: - stack: name: "heroku-22" prefix: "dist-heroku-22-develop/" + upstream: "dist-heroku-22-stable/" os: "ubuntu-latest" series: version: 20220829 @@ -86,35 +90,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-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true + run: ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} igbinary "${{ matrix.series.igbinary }}" "php-${{ matrix.series.php }}.*" ${{ 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-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true + run: ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} msgpack "${{ matrix.series.msgpack }}" "php-${{ matrix.series.php }}.*" ${{ 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-${{ 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 + ./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.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-${{ 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 + ./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.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-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true + ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} swoole "$VERSION" "php-${{ matrix.series.php }}.*" ${{ 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-${{ matrix.series.php }}.*" ${{ matrix.stack.prefix }} true + ./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} openswoole "$VERSION" "php-${{ matrix.series.php }}.*" ${{ matrix.stack.upstream }} true done diff --git a/scripts/build-extension.sh b/scripts/build-extension.sh index eb5205f..d67cd5f 100755 --- a/scripts/build-extension.sh +++ b/scripts/build-extension.sh @@ -8,7 +8,7 @@ PHP_APIVERSION="$3" # e.g. "20240924" EXTENSION_NAME="$4" # e.g. "igbinary" EXTENSION_VERSION="$5" # e.g. "3.2.15" EXTENSION_DEPS="$6" # e.g. "php-$PHP_VERSION.*" -UPSTREAM_S3_PREFIX="$7" # e.g. "dist-heroku-24-amd64-stable/" +UPSTREAM_S3_PREFIX="$7" # upstream (lang-php) S3 prefix, e.g. "dist-heroku-24-amd64-stable/" WITH_DEPLOY=${8:-"false"} # e.g. "true" or "false" if [ "$EXTENSION_VERSION" == "" ]; then From c8ef60dd7f644c228be665d1d4c6a5a387960fe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Till=20Kru=CC=88ss?= Date: Thu, 5 Mar 2026 14:25:58 -0800 Subject: [PATCH 4/8] fail on error --- scripts/build-extension.sh | 4 +++- scripts/build-lib.sh | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/build-extension.sh b/scripts/build-extension.sh index d67cd5f..860ac86 100755 --- a/scripts/build-extension.sh +++ b/scripts/build-extension.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -euo pipefail + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) HEROKUSTACK="$1" # e.g. "heroku-22" @@ -50,4 +52,4 @@ docker run --rm \ ${HEROKUSTACK} ${COMMAND} \ ${OVERWRITE_FLAG} extensions/no-debug-non-zts-${PHP_APIVERSION}/${EXTENSION_NAME}-${EXTENSION_VERSION} -set +x \ No newline at end of file +set +x diff --git a/scripts/build-lib.sh b/scripts/build-lib.sh index 6c3d4b4..26b04d0 100755 --- a/scripts/build-lib.sh +++ b/scripts/build-lib.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -euo pipefail + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) HEROKUSTACK=$1 # e.g. "heroku-24" From 4d4739d6c18a2a75cd6c0057b0f7f3af290d7d05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Till=20Kru=CC=88ss?= Date: Thu, 5 Mar 2026 14:33:23 -0800 Subject: [PATCH 5/8] inherit secrets --- .github/workflows/pr.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 656c8db..be752fc 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -9,9 +9,12 @@ jobs: uses: ./.github/workflows/build.yml with: S3_PREFIX: pull-requests/${{ github.event.number }}/ + secrets: inherit call-mkrepo: name: Make repositories + needs: call-build uses: ./.github/workflows/mkrepo.yml with: S3_PREFIX: pull-requests/${{ github.event.number }}/ + secrets: inherit From 815634be5c00c8c65f16be4d6ff58b0efb678a93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Till=20Kru=CC=88ss?= Date: Thu, 5 Mar 2026 14:38:13 -0800 Subject: [PATCH 6/8] drop region --- .github/workflows/build.yml | 1 - .github/workflows/mkrepo.yml | 1 - .github/workflows/sync.yml | 1 - 3 files changed, 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7fbda0d..6f81cbc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,6 @@ jobs: timeout-minutes: 20 env: S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }} - S3_REGION: ${{ secrets.S3_REGION || '' }} S3_PREFIX: ${{ inputs.S3_PREFIX || matrix.stack.prefix }} BUILDPACK: ./vendor/heroku/heroku-buildpack-php AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} diff --git a/.github/workflows/mkrepo.yml b/.github/workflows/mkrepo.yml index e3bd2f2..81420da 100644 --- a/.github/workflows/mkrepo.yml +++ b/.github/workflows/mkrepo.yml @@ -42,7 +42,6 @@ jobs: env: S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }} - S3_REGION: ${{ secrets.S3_REGION || '' }} S3_PREFIX: ${{ inputs.S3_PREFIX || matrix.stack.develop }} BUILDPACK: ./vendor/heroku/heroku-buildpack-php diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index df75b2b..55e8e4b 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -31,7 +31,6 @@ jobs: env: S3_BUCKET: ${{ secrets.S3_BUCKET || 'heroku-php-extensions' }} - S3_REGION: ${{ secrets.S3_REGION || '' }} BUILDPACK: ./vendor/heroku/heroku-buildpack-php steps: From ee0a995cef72b48312a0cdecb6565ba41d11ce9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Till=20Kru=CC=88ss?= Date: Thu, 5 Mar 2026 14:55:03 -0800 Subject: [PATCH 7/8] formatting --- .github/workflows/build.yml | 6 +++++- .github/workflows/sync.yml | 2 +- scripts/build-dockerfile.sh | 2 +- scripts/build-lib.sh | 2 +- scripts/create-dockerfile.sh | 2 +- scripts/setup-local.sh | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6f81cbc..3627c80 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ on: jobs: build: - name: Build PHP ${{ matrix.series.php }} for ${{ matrix.stack.name }} + name: Build PHP ${{ matrix.series.php }} (${{ matrix.stack.name }}, ${{ matrix.stack.arch }}) runs-on: ${{ matrix.stack.os }} timeout-minutes: 20 env: @@ -27,14 +27,17 @@ jobs: 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/" upstream: "dist-heroku-24-amd64-stable/" os: "ubuntu-latest" - name: "heroku-24" + arch: "arm64" prefix: "dist-heroku-24-arm64-develop/" upstream: "dist-heroku-24-arm64-stable/" os: "ubuntu-24.04-arm" @@ -54,6 +57,7 @@ jobs: # heroku-24 cannot compile openswoole 4.12.1 anymore, include for heroku-22 only - stack: name: "heroku-22" + arch: "amd64" prefix: "dist-heroku-22-develop/" upstream: "dist-heroku-22-stable/" os: "ubuntu-latest" diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index 55e8e4b..1bae98b 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -45,7 +45,7 @@ jobs: - name: Build Dockerfile run: ./scripts/create-dockerfile.sh ${{ matrix.stack.name }} - + - name: Docker build run: ./scripts/build-dockerfile.sh ${{ matrix.stack.name }} diff --git a/scripts/build-dockerfile.sh b/scripts/build-dockerfile.sh index 093adb8..ad403ed 100755 --- a/scripts/build-dockerfile.sh +++ b/scripts/build-dockerfile.sh @@ -4,4 +4,4 @@ SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) HEROKUSTACK="$1" # e.g. "heroku-24" -docker build --pull --tag "$HEROKUSTACK" --file "docker/build/${HEROKUSTACK}.Dockerfile" ${SCRIPT_DIR}/.. \ No newline at end of file +docker build --pull --tag "$HEROKUSTACK" --file "docker/build/${HEROKUSTACK}.Dockerfile" ${SCRIPT_DIR}/.. diff --git a/scripts/build-lib.sh b/scripts/build-lib.sh index 26b04d0..5189efb 100755 --- a/scripts/build-lib.sh +++ b/scripts/build-lib.sh @@ -42,4 +42,4 @@ docker run --rm \ $HEROKUSTACK \ ${COMMAND} ${OVERWRITE_FLAG} libraries/${LIBNAME}-${LIBVERSION} -set +x \ No newline at end of file +set +x diff --git a/scripts/create-dockerfile.sh b/scripts/create-dockerfile.sh index c4c521d..c311805 100755 --- a/scripts/create-dockerfile.sh +++ b/scripts/create-dockerfile.sh @@ -9,4 +9,4 @@ cat ${SCRIPT_DIR}/../vendor/heroku/heroku-buildpack-php/support/build/_docker/${ cat <> "${SCRIPT_DIR}/../docker/build/${HEROKUSTACK}.Dockerfile" ENV WORKSPACE_DIR=/workspace ENV PATH=/app/vendor/heroku/heroku-buildpack-php/support/build/_util:\$PATH -EOF \ No newline at end of file +EOF diff --git a/scripts/setup-local.sh b/scripts/setup-local.sh index 6d25306..e961419 100755 --- a/scripts/setup-local.sh +++ b/scripts/setup-local.sh @@ -9,4 +9,4 @@ composer install --working-dir=${SCRIPT_DIR}/.. --prefer-dist --no-progress --no cp ${SCRIPT_DIR}/../vendor/heroku/heroku-buildpack-php/requirements.txt . # Create environment file -cp ${SCRIPT_DIR}/../.env.example ${SCRIPT_DIR}/../.env \ No newline at end of file +cp ${SCRIPT_DIR}/../.env.example ${SCRIPT_DIR}/../.env From a9102c32a5d730e0fc680ae933b1628cc57104eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Till=20Kru=CC=88ss?= Date: Thu, 5 Mar 2026 14:56:32 -0800 Subject: [PATCH 8/8] fix mkrepo condition --- .github/workflows/mkrepo.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mkrepo.yml b/.github/workflows/mkrepo.yml index 81420da..c5287df 100644 --- a/.github/workflows/mkrepo.yml +++ b/.github/workflows/mkrepo.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 20 - if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }} + if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }} strategy: matrix: