Skip to content

Danielvallance/arm ci - #442

Draft
danielvallance wants to merge 1 commit into
mainfrom
danielvallance/arm_ci
Draft

Danielvallance/arm ci#442
danielvallance wants to merge 1 commit into
mainfrom
danielvallance/arm_ci

Conversation

@danielvallance

Copy link
Copy Markdown
Contributor

No description provided.

@danielvallance
danielvallance force-pushed the danielvallance/arm_ci branch 24 times, most recently from cb7be1b to c8cd71c Compare July 21, 2026 11:02
@danielvallance
danielvallance force-pushed the danielvallance/arm_ci branch from c8cd71c to 01004f4 Compare July 21, 2026 15:09
@danielvallance
danielvallance force-pushed the main branch 2 times, most recently from d83aa2c to 43e0681 Compare July 22, 2026 11:00
@danielvallance
danielvallance force-pushed the danielvallance/arm_ci branch from 01004f4 to d3b250a Compare July 22, 2026 13:30
@razvand
razvand requested a lite review from Copilot August 21, 2026 07:56

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
@razvand razvand assigned razvand and procub3r and unassigned razvand Aug 21, 2026
@razvand razvand added the enhancement New feature or request label Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants