rusackas opened a new pull request, #45755: URL: https://github.com/apache/superset/pull/45755
### SUMMARY Master pushes build the `linux/arm64` and `linux/amd64` images in one `buildx` call on an amd64 runner, so the arm64 half runs under QEMU emulation. On the last few master pushes the `superset` preset's "Build Docker Image" step took about 33 minutes (39 minutes for the job), and `dev` took 6 minutes of a 15 minute job, almost all of it emulation. This builds each platform natively in its own job: - `docker-build-arm64` (new, `ubuntu-26.04-arm`, master pushes only) builds `linux/arm64` and pushes it under the `-arm` suffixed tags supersetbot already produces for a single arm64 platform (`master-arm`, `<sha>-arm`, `master-dev-arm`, and so on). - `docker-build` (existing, amd64) now `needs` the arm64 job on master, builds `linux/amd64` only, pushes the unsuffixed tags as before, then folds each pair into one manifest list with `docker buildx imagetools create -t <tag> <tag> <tag>-arm`. Everything after the build (pull, Grype scan, websocket smoke test, docker-compose sanity check) is unchanged. - `scripts/docker-build-plan.sh` and `scripts/docker-build-extra-flags.sh` take an optional platform argument so each job gets a single-platform plan and its own registry cache ref. arm64 exports to `apache/superset-cache:<base>-arm64`; amd64 keeps the unsuffixed ref that PR validation builds, the `docker-compose*.yml` `cache_from` entries and the release workflow all read, so none of those change. - The always-on `docker-command-check` job now also asserts the per-platform plans, the cache refs, and the tag pairing the merge step relies on, so a supersetbot change to its tag scheme fails that check instead of the first master publish. A failed arm64 build skips the amd64 publish rather than leaving amd64-only images under the multi-platform tags. The unsuffixed tags are amd64-only for the few seconds between the amd64 push and the merge step in the same job. Pull request and version-branch builds (which only `--load` an amd64 image) and the release workflow are not affected. The native arm64 runners are GitHub-hosted and free for public repositories. Rough expectation per master push, to be measured once this lands: the `superset` preset drops from one 39 minute job to two jobs of roughly 10 minutes each, so both wall clock and runner minutes roughly halve. The other presets gain less since they spent less time emulating. ### BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF N/A ### TESTING INSTRUCTIONS - The `verify docker build command` job runs on this PR and covers the new assertions; the same script passes locally against `supersetbot` from npm. - `bash scripts/docker-build-plan.sh push refs/heads/master master linux/arm64` prints a `--platform linux/arm64 --push` plan; without the fourth argument it still prints the combined plan the release workflow uses. - `PUBLISH_DOCKER_CACHE=true DOCKERHUB_TOKEN=x scripts/docker-build-extra-flags.sh dev tag ci linux/arm64` shows the `-dev-arm64` cache ref; `linux/amd64` and no platform show the unsuffixed one. - The arm64 job itself only runs on master pushes with the Docker Hub secrets, so the first real exercise is the master run after merge. If it misbehaves, reverting this PR restores the single multi-platform build. ### ADDITIONAL INFORMATION - [ ] Has associated issue: - [ ] Required feature flags: - [ ] Changes UI - [ ] Includes DB Migration (follow approval process in [SIP-59](https://github.com/apache/superset/issues/13351)) - [ ] Migration is atomic, supports rollback & is backwards-compatible - [ ] Confirm DB migration upgrade and downgrade tested - [ ] Runtime estimates and downtime expectations provided - [ ] Introduces new feature or API - [ ] Removes existing feature or API 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
