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]

Reply via email to