Skip to content
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

Closed
wants to merge 17 commits into from

Conversation

boboldehampsink
Copy link

@boboldehampsink boboldehampsink commented Sep 6, 2022

Closes #194

This is an attempt at creating a non-intrusive multiarch build. It adds an arm64 image without compromise.

@boboldehampsink
Copy link
Author

boboldehampsink commented Sep 6, 2022

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 ?

@boboldehampsink
Copy link
Author

boboldehampsink commented Sep 6, 2022

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

Copy link
Member

@edmorley edmorley left a 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:

  1. Addressing the review comment below
  2. 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)
  3. Updating docs in this repo.
  4. (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.)
  5. 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).

heroku-22/installed-packages.txt Outdated Show resolved Hide resolved
@boboldehampsink
Copy link
Author

I have added pushing with buildx

@boboldehampsink
Copy link
Author

@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.

@ShamoX
Copy link

ShamoX commented Feb 28, 2023

@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).

@boboldehampsink
Copy link
Author

@ShamoX see @edmorley's latest comment in #194

# Conflicts:
#	heroku-18/Dockerfile
#	heroku-18/installed-packages.txt
#	heroku-18/setup.sh
@joshwlewis
Copy link
Member

@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.

@joshwlewis joshwlewis closed this Mar 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ARM64 support for image
5 participants