-
Notifications
You must be signed in to change notification settings - Fork 78
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added ARM64 support with multiarch build #227
Conversation
To really get this to work, the images should be pushed to registry directly by the build command, could be done like this: robuust@a31ba0f ? |
As a proof of concept I pushed to a repo I own, and you see that it has both architectures: https://hub.docker.com/repository/docker/robuust/heroku/tags |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi!
Thank you for the PR.
I wasn't going to leave a review until the PR was taken out of draft status (or you asked for feedback specifically), however judging by the comments in #194 people seem to (understandably, but unfortunately mistakenly) think this is ready - so leaving this to reduce confusion.
Before this could be merged the following would be needed:
- Addressing the review comment below
- Figuring out/testing the publishing part in CI (my understanding of
buildx
is that the pushing has to be done at the same time as building via the--push
command, but that will need a rethink/refactor of the way builds/releasing via CI is performed) - Updating docs in this repo.
- (The biggest part) Adding support to all official buildpacks (and ideally most popular non-official buildpacks) for ARM64, otherwise all ARM64 users will be silently broken as soon as this is released. (Or at the very least, adding errors saying "this buildpack doesn't yet support ARM64, please force use of x86_64 when using this buildpack: <docker
--platform
instructions>" etc.) - Figuring out comms plan for rolling it out (eg Heroku changelog post + any Dev Center changes) to reduce the end user impact/confusion from the long tail of other buildpacks that will not ever support ARM64.
I obviously don't expect you to do any of that work (it's our responsibility to do it), but this PR can't be merged until that has occurred.
In the meantime I would recommend using the images from your own Docker Hub repository, and if there are specific buildpacks where ARM64 support would help you, opening issues against those (and if you were feeling particularly adventurous, opening PRs if you didn't want to wait for us to add support, which may still be a fair way out).
I have added pushing with buildx |
@edmorley I will leave this here as an example, but I think the actual implementation of this is better done by you guys at Heroku. Let's say this is a proof of concept. |
# Conflicts: # bin/publish-to-registries.sh
@boboldehampsink, is your last comment meaning that this will not be merged by Heroku team? If that so, is there any plan for integrating this feature? I cannot do things locally, since my goal would be to get Gitlab CI/CD workflow (AutoDevOps one) works on my Runners, which are dispatched between my Kubernetes AMD64 and my macs (M1 and M2). |
# Conflicts: # heroku-18/Dockerfile # heroku-18/installed-packages.txt # heroku-18/setup.sh
@boboldehampsink Thanks a bunch for the inspiration and proof of concept. We just merged #245, which added heroku/heroku:24.nightly as a multi-arch image with amd/arm support. I'm going to close this, since we're not considering multi-arch or arm for heroku-22 and prior. Note that the upstream ubuntu 24.04 isn't stabilized or released yet, so heroku/heroku:24.nightly is likely to have substantial churn for a bit. |
Closes #194
This is an attempt at creating a non-intrusive multiarch build. It adds an arm64 image without compromise.