Danielvallance/arm ci - #442
Draft
danielvallance wants to merge 1 commit into
Draft
Conversation
danielvallance
force-pushed
the
danielvallance/arm_ci
branch
24 times, most recently
from
July 21, 2026 11:02
cb7be1b to
c8cd71c
Compare
danielvallance
force-pushed
the
danielvallance/arm_ci
branch
from
July 21, 2026 15:09
c8cd71c to
01004f4
Compare
danielvallance
force-pushed
the
main
branch
2 times, most recently
from
July 22, 2026 11:00
d83aa2c to
43e0681
Compare
danielvallance
force-pushed
the
danielvallance/arm_ci
branch
from
July 22, 2026 13:30
01004f4 to
d3b250a
Compare
There was a problem hiding this comment.
Pull request overview
This PR updates multiple example images and tests to better support running the CI matrix on both amd64 and ARM runners, primarily by making Docker builds architecture-aware (via --platform=$BUILDPLATFORM and target-arch runtime stages) and by hardening test readiness for services that take time to initialize.
Changes:
- Add cross-/multi-arch build patterns across many Dockerfiles (native build stages + target-arch runtime/library donor stages).
- Improve test reliability by adding a shared readiness retry helper and using it for DB/service clients that connect lazily or warm up slowly.
- Make internal service domains configurable/unique per test run to avoid collisions in parallel CI runs.
Reviewed changes
Copilot reviewed 117 out of 117 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| wordpress/wordpress/wrapper.sh | Move WordPress DB config to runtime env + patch wp-config at startup |
| wordpress/wordpress/Dockerfile | Stop baking DB settings into image at build time |
| wordpress/test_wordpress.py | Use per-run internal domain for MariaDB and pass via env |
| wordpress-all-in-one/Dockerfile | Pin base image platform to x86_64 |
| wazero-import-go/Dockerfile | Add build-platform stage + cross toolchain selection for CGO |
| vsftpd/Dockerfile | Pin build stage platform to x86_64 |
| visual-studio-code-server/Dockerfile | Add named stage and pin platform for reproducible COPY-from |
| tyk/tyk/rootfs/etc/tyk.conf | Make Redis host configurable (empty by default) |
| tyk/tyk/Dockerfile | Cross-build Tyk with target toolchain when needed |
| tyk/test_tyk.py | Use unique internal Redis domain and pass host via env |
| tyk/redis/Dockerfile | Pin base image platform to x86_64 |
| tyk/README.md | Document required Redis host env var for gateway |
| traefik/Dockerfile | Build on build host, cross-compile backend with toolchain as needed |
| spin-wagi-http/Dockerfile | Build wasm components natively; separate x86_64 libs donor stage |
| skipper0.18/Dockerfile | Cross-compile with optional cross toolchain |
| ruby3.2-rails/README.md | Update Rails server command to explicitly use WEBrick |
| ruby3.2-rails/Dockerfile | Split app generation vs x86_64 gem-native-extension install |
| ruby3.2-rails/.dockerignore | Exclude test file from Docker context |
| redis7.2/test_redis7.2.py | Add readiness retry and wait for instance running |
| redis7.2/Dockerfile | Pin base image platform to x86_64 |
| python-playwright-chromium/wrapper.sh | Remove venv activation; set PATH explicitly |
| python-playwright-chromium/requirements.txt | Switch to playwright and fastapi[standard] |
| python-playwright-chromium/Dockerfile | Rework to copy-only x86_64 artifacts; multiarch dpkg + wheel download |
| postgres/test_postgres.py | Add readiness retry for “starting up” postgres window |
| postgres/Dockerfile | Cross-build Postgres via Debian multiarch and cross toolchain |
| phoenix-postgres/postgres/Dockerfile | Build extension with amd64 cross toolchain against headers from x86_64 base |
| phoenix-postgres/phoenix/Dockerfile | Build beams natively; swap in x86_64 OTP/ERTS from donor stage |
| opentelemetry-collector/Dockerfile | Pin upstream stage to x86_64 |
| openclaw/Dockerfile | Pin base image platform to x86_64 |
| novnc-browser/mozillateam-ppa.asc | Vendor Mozilla PPA signing key |
| novnc-browser/image/xvfb_startup.sh | Capture Xvfb stderr and print on failure |
| novnc-browser/image/tint2_startup.sh | Fail fast if X display is unreachable; surface Xvfb stderr |
| novnc-browser/Dockerfile | Split native noVNC clone from x86_64 desktop install stage |
| node24-karaoke/Dockerfile | Build assets on build host; copy runtime from x86_64 donor stage |
| node21-websocket/Dockerfile | Build deps on build host; copy node runtime from x86_64 donor stage |
| node18-wingsio/Dockerfile | Pin build stage platform to x86_64 |
| node18-agario/Dockerfile | Pin build stage platform to x86_64 |
| node-playwright-webkit/Dockerfile | Pin build stage platform to x86_64 |
| node-playwright-firefox/Dockerfile | Pin build stage platform to x86_64 |
| node-playwright-chromium/Dockerfile | Pin build stage platform to x86_64 |
| node-code-execution/Dockerfile | Split build vs runtime; copy built tree into runtime stage |
| nginx/Dockerfile | Pin build stage platform to x86_64 |
| nginx-flask-mongo/test_nginx-flask-mongo.py | Use unique backend domain per run; pass BACKEND_HOST to nginx |
| nginx-flask-mongo/README.md | Document BACKEND_HOST override behavior |
| nginx-flask-mongo/nginx/nginx.conf | Template proxy_pass host for substitution |
| nginx-flask-mongo/nginx/Kraftfile | Run custom entrypoint to render config then start nginx |
| nginx-flask-mongo/nginx/entrypoint.sh | envsubst template -> nginx.conf at startup |
| nginx-flask-mongo/nginx/Dockerfile | Add entrypoint + template config |
| nginx-flask-mongo/mongo/Dockerfile | Pin build stage platform to x86_64 |
| nginx-flask-mongo/flask/Dockerfile | Pin builder/runtime stage platforms to x86_64 |
| neo4j/Dockerfile | Pin base image platform to x86_64 |
| mysql/test_mysql.py | Add readiness retry for MySQL warm-up |
| mongodb/test_mongodb.py | Add readiness retry for MongoDB server selection warm-up |
| mongodb/Dockerfile | Pin build stage platform to x86_64 |
| minio/Dockerfile | Cross-compile with target toolchain; correct version metadata assembly |
| minecraft/Dockerfile | Pin base image platform to x86_64 |
| memcached1.6/test_memcached1.6.py | Add readiness retry for memcached warm-up |
| memcached1.6/Dockerfile | Pin build stage platform to x86_64 |
| mcp-server-simple/Dockerfile | Pin build stage platform to x86_64 |
| mcp-server-arxiv/Dockerfile | Add x86_64 uv donor stage; pin platforms to x86_64 |
| mariadb/test_mariadb.py | Add readiness retry for MariaDB warm-up |
| mariadb/Dockerfile | Pin build stage platform to x86_64 |
| imaginary/Dockerfile | Multiarch libvips + cross toolchain + target GOOS/GOARCH build |
| hugo0.122/Dockerfile | Build-stage download on build host; x86_64 libs donor stage |
| httpserver-rust1.91/Dockerfile | Rust cross-compile with optional cross toolchain; x86_64 libs donor |
| httpserver-rust1.88-rocket0.5/Dockerfile | Rust cross-compile and stage split for x86_64 libs |
| httpserver-rust1.88-actix-web4/Dockerfile | Rust cross-compile and stage split for x86_64 libs |
| httpserver-rust1.75-tokio/Dockerfile | Rust cross-compile and stage split for x86_64 libs |
| httpserver-rust-trunkrs-leptos/Dockerfile | Build wasm assets natively; pin nginx donor stage to x86_64 |
| httpserver-python3.12/Dockerfile | Pin build stage platform to x86_64 |
| httpserver-python3.12-flask3.0/Dockerfile | Pin build stage platform to x86_64 |
| httpserver-python3.12-flask3.0-sqlite/Dockerfile | Pin build stage platform to x86_64 |
| httpserver-python3.12-fastapi-0.121.3/Dockerfile | Pin build stage platform to x86_64 |
| httpserver-python3.12-django5.0/Dockerfile | Pin build stage platform to x86_64 |
| httpserver-prisma-expressjs4.19-node18/Dockerfile | Pin build stage platform to x86_64 |
| httpserver-perl5.42/Dockerfile | Pin build stage platform to x86_64 |
| httpserver-node26/Dockerfile | Pin node stage platform to x86_64 |
| httpserver-node22-sveltekit/Dockerfile | Build on build host; install runtime deps on x86_64 stage |
| httpserver-node22-react-router/Dockerfile | Split base/build/runtime with platform pinning |
| httpserver-node21-solid-start/Dockerfile | Build on build host; copy node runtime from x86_64 stage |
| httpserver-node21-nextjs/Dockerfile | Build on build host; copy node runtime from x86_64 stage |
| httpserver-node-vite-ssr-vanilla/Dockerfile | Build on build host; copy node runtime from x86_64 stage |
| httpserver-node-express-puppeteer/Dockerfile | Rework to native build + unpacked amd64 deps + amd64 base userland donor |
| httpserver-nginx-vite-vanilla/Dockerfile | Avoid running amd64 nginx stage; provide log files from build stage |
| httpserver-lua5.1/Dockerfile | Pin build stage platform to x86_64 |
| httpserver-java21/README.md | Documentation tweak removing platform qualifier in example |
| httpserver-java17-springboot/Dockerfile | Build jar natively; install target-arch JVM via multiarch donor stage |
| httpserver-java17-spring-petclinic/Dockerfile | Build jar natively; install target-arch JVM via multiarch donor stage |
| httpserver-gpp13.2/README.md | Documentation tweak removing platform qualifier in example |
| httpserver-gpp13.2/Dockerfile | Use Debian + cross toolchain selection for target C++ build |
| httpserver-go1.22-redis/redis/Dockerfile | Pin redis stage platform to x86_64 |
| httpserver-go1.22-redis/httpserver-go/Dockerfile | Cross-compile Go with optional toolchain |
| httpserver-go1.21/Dockerfile | Cross-compile Go with optional toolchain |
| httpserver-gcc13.2/Dockerfile | Use Debian + cross toolchain selection for target C build |
| httpserver-flask-redis/redis/Dockerfile | Pin redis stage platform to x86_64 |
| httpserver-flask-redis/flask/Dockerfile | Pin python stage platform to x86_64 |
| httpserver-expressjs4.18-node21/Dockerfile | Build on build host; copy node runtime from x86_64 stage |
| httpserver-erlang26.2/Dockerfile | Build beams on build host; copy runtime from x86_64 donor stage |
| httpserver-elixir1.16/Dockerfile | Platform tweaks for Elixir release + runtime assembly |
| httpserver-dotnet10.0/Dockerfile | Pin runtime donor stage to x86_64 |
| httpserver-c-debug/Dockerfile | Pin build stage platform to x86_64 |
| httpserver-bun/Dockerfile | Pin bun stage platform to x86_64 |
| httpserver-boost1.74-gpp13.2/Dockerfile | Install Boost for target arch + cross toolchain selection |
| haproxy/Dockerfile | Pin build stage platform to x86_64 |
| grafana/Dockerfile | Build on build host; cross-compile backend; pull assets from x86_64 upstream |
| github-webhook-node/Dockerfile | Build deps on build host; copy node runtime from x86_64 stage |
| feature-change-instance-cmd/Dockerfile | Use Debian + cross toolchain selection for target C builds |
| duckdb-go1.21/Dockerfile | Cross-compile cgo build with toolchain and static libm workaround |
| dragonflydb/Dockerfile | Pin build stage platform to x86_64 |
| debian-ssh/Dockerfile | Pin build stage platform to x86_64 |
| conftest.py | Allow build-image timeout override in tests |
| caddy2.7-go1.21/Dockerfile | Cross-compile Caddy with optional toolchain |
| build-environments/Dockerfile | Force CGO-enabled build and add cross toolchain when needed |
| basic-ops/Dockerfile | Use Debian + cross toolchain selection for target C build |
| .github/workflows/test-examples.yaml | Run pytest matrix on amd64 + arm runners; add QEMU setup; pin setup-action version |
| _testlib/unikraft.py | Stream build output, add better logging/timing, support per-build timeouts |
| _testlib/readiness.py | Add shared retry helper for service warm-up readiness |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+5
to
+9
| # Database settings, overridable via --env at instance creation. The defaults | ||
| # match the database, user and password created by /init.sql. | ||
| WORDPRESS_DB_NAME="${WORDPRESS_DB_NAME:-wordpress}" | ||
| WORDPRESS_DB_USER="${WORDPRESS_DB_USER:-wordpress}" | ||
| WORDPRESS_DB_PASSWORD="${WORDPRESS_DB_PASSWORD:-wordpresspass}" |
Comment on lines
+31
to
+37
| echo "Configuring wp-config.php ..." | ||
| sed -i \ | ||
| -e "s/define( 'DB_NAME', '[^']*' );/define( 'DB_NAME', '${WORDPRESS_DB_NAME}' );/" \ | ||
| -e "s/define( 'DB_USER', '[^']*' );/define( 'DB_USER', '${WORDPRESS_DB_USER}' );/" \ | ||
| -e "s/define( 'DB_PASSWORD', '[^']*' );/define( 'DB_PASSWORD', '${WORDPRESS_DB_PASSWORD}' );/" \ | ||
| -e "s/define( 'DB_HOST', '[^']*' );/define( 'DB_HOST', '${WORDPRESS_DB_HOST}' );/" \ | ||
| /var/www/html/wp-config.php |
Comment on lines
+1
to
3
| # The release bundles the Erlang runtime (ERTS), so it must be built for the | ||
| # target architecture. | ||
| FROM --platform=$BUILDPLATFORM elixir:1.16.2-slim AS build |
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.
No description provided.