Merged
Conversation
adamziel
added a commit
that referenced
this pull request
May 5, 2026
## What changed - Raises the WASM extension matrix build timeout from 45 to 60 minutes in the publish workflow. - Keeps the same timeout in the interactive WASM spike workflow, which runs the same build shape. ## Why The first publish run after merging #399 built the PHP 8.3 side module successfully, but hit the 45-minute job timeout before the verify/upload steps could run. The log ended with the artifact written and then the job cancellation.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What it does
Runs the WASM extension PHP-version matrix concurrently and shares the expensive Playground base image across the matrix. Both the PR smoke workflow and the publish workflow now build
playground-php-wasm:baseonce, upload it as a short-lived internal artifact, then fan out all six PHP 8.x builds in parallel.Rationale
The publish workflow was running one PHP build at a time. In the observed trunk run, PHP 8.5 finished before PHP 8.4 started, and the build spent about 24m30s inside
build-in-docker-rust.shfor that one PHP version.Blindly running all six jobs in parallel exposed another bottleneck: every job rebuilt the same Ubuntu-based Playground base image and hit
apt-get updateat the same time. Sharing that base image keeps the wall-time win while avoiding six duplicate apt/install passes.A later CI run showed one more duplicate path:
@php-wasm/compile-extension@3.1.27rebuilt the Playground base image and PHP-specific compile-extension image again during Stage 2. The build script now reuses the images prepared in Stage 0, so each matrix job does one Docker image preparation pass instead of two.Implementation
base-imagejob to.github/workflows/wasm-spike.ymland.github/workflows/publish-wasm-extension-artifact.ymlplayground-php-wasm:baseimage withretention-days: 1docker loadthat base image before building its PHP-specific compile-extension imagemax-parallel: 6for both PHP matricesSKIP_BASE_IMAGE_BUILD=1support tobuild-in-docker-rust.shso CI can require a preloaded base image while local runs still build it normallyI also tried wiring
docker buildx build --cache-to type=gha, but dropped it. The GHA cache backend requires a non-default Buildx driver, and that driver does not automatically expose locally tagged intermediate images likeplayground-php-wasm:baseto later DockerfileFROMlines. The internal image artifact is simpler and matches this build's local image chain.Follow-up:
@php-wasm/compile-extensionshould expose a first-class way to use already-prepared images so this repo does not need to patch the pinned CLI at runtime.Testing instructions
bash -n packages/php-ext-wp-mysql-parser/wasm-spike/build-in-docker-rust.shactionlint .github/workflows/publish-wasm-extension-artifact.yml .github/workflows/wasm-spike.ymlgit diff --check25348528195: shared base image job passed in 4m18s, all six PHP matrix jobs passed in 9m30s-11m55s, and the workflow completed successfully