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
35 changes: 21 additions & 14 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,11 @@ 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 }} (${{ matrix.stack.name }}, ${{ matrix.stack.arch }})
runs-on: ${{ matrix.stack.os }}
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 }}
Expand All @@ -28,20 +27,26 @@ 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"
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:
Expand All @@ -52,7 +57,9 @@ 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"
series:
version: 20220829
Expand Down Expand Up @@ -86,35 +93,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
done
./scripts/build-extension.sh ${{ matrix.stack.name }} ${{ matrix.series.php }} ${{ matrix.series.version }} openswoole "$VERSION" "php-${{ matrix.series.php }}.*" ${{ matrix.stack.upstream }} true
done
7 changes: 3 additions & 4 deletions .github/workflows/mkrepo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ 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

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:
Expand All @@ -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

Expand All @@ -58,7 +57,7 @@ jobs:

- name: Build Dockerfile
run: ./scripts/create-dockerfile.sh ${{ matrix.stack.name }}

- name: Docker build
run: ./scripts/build-dockerfile.sh ${{ matrix.stack.name }}

Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
3 changes: 1 addition & 2 deletions .github/workflows/sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -46,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 }}

Expand Down
2 changes: 1 addition & 1 deletion scripts/build-dockerfile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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}/..
docker build --pull --tag "$HEROKUSTACK" --file "docker/build/${HEROKUSTACK}.Dockerfile" ${SCRIPT_DIR}/..
6 changes: 4 additions & 2 deletions scripts/build-extension.sh
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -8,7 +10,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
Expand Down Expand Up @@ -50,4 +52,4 @@ docker run --rm \
${HEROKUSTACK} ${COMMAND} \
${OVERWRITE_FLAG} extensions/no-debug-non-zts-${PHP_APIVERSION}/${EXTENSION_NAME}-${EXTENSION_VERSION}

set +x
set +x
4 changes: 3 additions & 1 deletion scripts/build-lib.sh
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -40,4 +42,4 @@ docker run --rm \
$HEROKUSTACK \
${COMMAND} ${OVERWRITE_FLAG} libraries/${LIBNAME}-${LIBVERSION}

set +x
set +x
2 changes: 1 addition & 1 deletion scripts/create-dockerfile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ cat ${SCRIPT_DIR}/../vendor/heroku/heroku-buildpack-php/support/build/_docker/${
cat <<EOF >> "${SCRIPT_DIR}/../docker/build/${HEROKUSTACK}.Dockerfile"
ENV WORKSPACE_DIR=/workspace
ENV PATH=/app/vendor/heroku/heroku-buildpack-php/support/build/_util:\$PATH
EOF
EOF
2 changes: 1 addition & 1 deletion scripts/setup-local.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
cp ${SCRIPT_DIR}/../.env.example ${SCRIPT_DIR}/../.env
Loading