From 93dcef4a40c270eb1721d83b8d8a2b26189284af Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 1 May 2026 11:55:52 +0100 Subject: [PATCH 1/5] Pin Swoole base image to 6.2-php8.5-alpine The previous tag (`php8.5-alpine`) tracks the nightly Swoole build from master, so the installed Swoole version could drift between rebuilds. Pinning to the `6.2` line gives reproducible builds while still picking up patch releases. tests.yaml now matches `6.2.\d+` instead of asserting an exact patch. Co-Authored-By: Claude Opus 4.7 (1M context) --- Dockerfile | 2 +- tests.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 99f90c0..59289f2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG BASE_IMAGE="phpswoole/swoole:php8.5-alpine" +ARG BASE_IMAGE="phpswoole/swoole:6.2-php8.5-alpine" ARG PHP_BUILD_DATE="20250925" FROM $BASE_IMAGE AS compile diff --git a/tests.yaml b/tests.yaml index e14e737..935fd98 100644 --- a/tests.yaml +++ b/tests.yaml @@ -107,7 +107,7 @@ commandTests: command: "php" args: ["--re", "swoole"] expectedOutput: - - ".*version 6.2.1.*" + - ".*version 6\\.2\\.\\d+.*" - name: 'ZIP' command: "zip" args: ["-v"] From 2c3f08ae96181f67dd8dfeb1ddc75b1c9ae506c6 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 1 May 2026 11:56:00 +0100 Subject: [PATCH 2/5] Fix manifest job tag reference for tag-push events `manifest_build_and_push_on_tag` runs on both `push` (tag) and `release: published`, but referenced `github.event.release.tag_name` which is only populated for release events. Pushing a tag without creating a GitHub Release produced an empty value and `docker manifest create` failed with "invalid reference format" (seen on the `1.2.2` tag run). Use `github.ref_name`, which is set for both event types. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/build-and-push.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-and-push.yml b/.github/workflows/build-and-push.yml index 5e3f889..13ff034 100644 --- a/.github/workflows/build-and-push.yml +++ b/.github/workflows/build-and-push.yml @@ -78,10 +78,10 @@ jobs: - name: Create manifest run: | docker manifest create \ - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.event.release.tag_name }} \ + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }} \ ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}-amd64 \ ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}-arm64 - name: Push manifest run: | - docker manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.event.release.tag_name }} + docker manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }} From 47e0614cf839f66cf28ea4a01f86fb7aa8e633ff Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 1 May 2026 12:10:15 +0100 Subject: [PATCH 3/5] Relax PHP version assertion to 8.5.x The pinned phpswoole/swoole:6.2-php8.5-alpine image ships PHP 8.5.4, not 8.5.5 (the nightly was tracking master). Match any 8.5.x patch to keep the test stable across patch updates. Co-Authored-By: Claude Opus 4.7 (1M context) --- tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.yaml b/tests.yaml index 935fd98..0d44113 100644 --- a/tests.yaml +++ b/tests.yaml @@ -92,7 +92,7 @@ commandTests: command: "php" args: ["-v"] expectedOutput: - - "PHP 8.5.5 (cli)*" + - "PHP 8\\.5\\.\\d+ \\(cli\\).*" - name: 'ImageMagick supported formats' command: "php" args: ["-i"] From 488da0cca83e9147750ba1c256cad6937cdc5909 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 1 May 2026 12:19:38 +0100 Subject: [PATCH 4/5] Pin Swoole base image to nightly digest Switch from the stable 6.2 line back to the nightly php8.5-alpine tag, but pinned by manifest digest so builds are reproducible. The 6.2 line lagged on PHP (8.5.4 vs nightly's 8.5.5) and trails the master Swoole patches we want. Pinned digest captures PHP 8.5.5 + Swoole 6.2.1. Co-Authored-By: Claude Opus 4.7 (1M context) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 59289f2..f37c2c2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG BASE_IMAGE="phpswoole/swoole:6.2-php8.5-alpine" +ARG BASE_IMAGE="phpswoole/swoole:php8.5-alpine@sha256:ba7d2d342ba0e3fef134098fcb95a9bc2de278e14ed5d775f683a412c3a66790" ARG PHP_BUILD_DATE="20250925" FROM $BASE_IMAGE AS compile From eb9e9beafcc2a67303c80903ac5f1fe248908371 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 1 May 2026 12:21:02 +0100 Subject: [PATCH 5/5] Pin Swoole base to released 6.2.0 instead of nightly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The nightly self-reports as 6.2.1 even though no such release exists upstream — it's just master's in-development version after v6.2.0. Pin to the actual released 6.2.0-php8.5-alpine image for clarity. Tests now assert exact versions (PHP 8.5.4, Swoole 6.2.0) since the base image is fully pinned and won't drift. Co-Authored-By: Claude Opus 4.7 (1M context) --- Dockerfile | 2 +- tests.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index f37c2c2..9ec4f7a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG BASE_IMAGE="phpswoole/swoole:php8.5-alpine@sha256:ba7d2d342ba0e3fef134098fcb95a9bc2de278e14ed5d775f683a412c3a66790" +ARG BASE_IMAGE="phpswoole/swoole:6.2.0-php8.5-alpine" ARG PHP_BUILD_DATE="20250925" FROM $BASE_IMAGE AS compile diff --git a/tests.yaml b/tests.yaml index 0d44113..6bc66c0 100644 --- a/tests.yaml +++ b/tests.yaml @@ -92,7 +92,7 @@ commandTests: command: "php" args: ["-v"] expectedOutput: - - "PHP 8\\.5\\.\\d+ \\(cli\\).*" + - "PHP 8.5.4 (cli)*" - name: 'ImageMagick supported formats' command: "php" args: ["-i"] @@ -107,7 +107,7 @@ commandTests: command: "php" args: ["--re", "swoole"] expectedOutput: - - ".*version 6\\.2\\.\\d+.*" + - ".*version 6.2.0.*" - name: 'ZIP' command: "zip" args: ["-v"]