Skip to content

Pin Swoole base image to 6.2 and fix tag manifest workflow#69

Merged
loks0n merged 5 commits intomainfrom
perf/swoole-io-uring
May 1, 2026
Merged

Pin Swoole base image to 6.2 and fix tag manifest workflow#69
loks0n merged 5 commits intomainfrom
perf/swoole-io-uring

Conversation

@loks0n
Copy link
Copy Markdown
Member

@loks0n loks0n commented May 1, 2026

Summary

  • Pin base image from the nightly phpswoole/swoole:php8.5-alpine tag to the stable phpswoole/swoole:6.2-php8.5-alpine line for reproducible builds. Loosened the tests.yaml Swoole assertion to 6.2.\d+ so any patch in the 6.2 line passes.
  • Fix manifest_build_and_push_on_tag in .github/workflows/build-and-push.yml: it referenced github.event.release.tag_name, which is empty when the workflow is triggered by a tag push (no GitHub Release). The job ran with an empty tag and docker manifest create docker.io/appwrite/base: failed with "invalid reference format" on the 1.2.2 tag. Switched to github.ref_name, which is populated for both push-on-tag and release events.

Notes

  • The branch name still says swoole-io-uring — that direction was abandoned; the upstream Swoole image doesn't ship an io_uring variant, and rather than maintain a custom Swoole rebuild we just pinned to the stable tag.
  • To recover the missing 1.2.2 manifest, re-run the failed job after merge or push it manually from the existing per-arch images.

Test plan

  • Build and Push workflow passes on this PR
  • Container Structure Test passes (Swoole 6.2.x assertion)
  • After merge, push a test tag (or re-run 1.2.2) to confirm the manifest job succeeds

🤖 Generated with Claude Code

loks0n and others added 2 commits May 1, 2026 11:55
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) <noreply@anthropic.com>
`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) <noreply@anthropic.com>
@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented May 1, 2026

Greptile Summary

This PR makes two targeted fixes: it pins the Swoole base image from the nightly php8.5-alpine floating tag to the specific patch 6.2.0-php8.5-alpine, and it corrects the manifest_build_and_push_on_tag workflow job to use github.ref_name instead of github.event.release.tag_name (which is empty on tag-push events). Test assertions in tests.yaml are updated to match the newly pinned image versions (PHP 8.5.4, Swoole 6.2.0).

Note: the PR description states the Swoole test assertion was "loosened to 6.2.\d+", but the actual change pins it to the exact string 6.2.0 — consistent with the pinned image but slightly more strict than the description implies.

Confidence Score: 5/5

Safe to merge — all three changes are correct and self-consistent.

No P0 or P1 issues found. The workflow fix correctly addresses the empty-tag bug, the Dockerfile pin improves build reproducibility, and the test assertions align with the pinned image versions.

No files require special attention.

Important Files Changed

Filename Overview
.github/workflows/build-and-push.yml Replaces github.event.release.tag_name with github.ref_name for the tag manifest job — correct fix since ref_name is populated for both tag-push and release events.
Dockerfile Pins Swoole base image to specific patch 6.2.0-php8.5-alpine, replacing the nightly floating tag for reproducible builds.
tests.yaml Updates PHP (8.5.5→8.5.4) and Swoole (6.2.1→6.2.0) version assertions to match the newly-pinned base image; assertions are exact rather than the regex pattern mentioned in the PR description.

Reviews (3): Last reviewed commit: "Pin Swoole base to released 6.2.0 instea..." | Re-trigger Greptile

Comment thread Dockerfile Outdated
loks0n and others added 3 commits May 1, 2026 12:10
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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
@loks0n loks0n merged commit c7d9626 into main May 1, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant