-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
Heroku-24 and multi-arch (arm/amd) #1439
Conversation
624ff61
to
c96e82b
Compare
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.
I'd suggest reframing this PR as heroku-24 support (without the arm64
stuff). There's really no way to activate the arm64
codepath (aside from unit tests), so we probably shouldn't be advertising support for it (I think it's totally fine to have the arm64
codepath, though).
c96e82b
to
8ea32f8
Compare
@joshwlewis I split up this PR into three PRs: |
8ea32f8
to
9ef927c
Compare
Heroku-24 base image supports two architectures amd64 and arm64. We've built binaries for these two architectures heroku/docker-heroku-ruby-builder#38. Effectively this means that the s3 bucket that holds the Ruby binaries has an additional folder. Previously files were at `<stack>/ruby-<version>.tgz` now they are at `<stack>/<arch>/ruby-<version>.tgz` but only for `heroku-24` and future stacks moving forward. To support multiple architectures, the buildpack needs to detect the current architecture and whether or not the current stack supports multiple architectures. Beyond downloading binaries, the buildpack is aware of the S3 structure to travers version numbers in order to warn customers when a newer version of a ruby version is available. We also warn customers if their current Ruby version is not available on the next stack. This behavior is implemented and tested in this commit, however we're not turning on warnings for `heroku-24` yet as customers cannot currently use it.
9ef927c
to
da64f44
Compare
Updated to use |
- Rewrites the project to use a pre-built JRuby binary. Links to downloads are at https://www.jruby.org/download. - Adds the heroku-24 base image as a build target - Re-uses the ARM url format for S3 that was introduced in heroku/docker-heroku-ruby-builder#38. Both the Ruby classic buildpack and CNB are tightly coupled to this format and will attempt to download binaries from S3 with cpu architecture information on heroku-24. Once built and uploaded to S3 there should be no changes needed to the buildpack to acquire support for heroku-24 and ARM due to: - heroku/heroku-buildpack-ruby#1439 - heroku/buildpacks-ruby#284
* Add Heroku-24 and ARM support - Rewrites the project to use a pre-built JRuby binary. Links to downloads are at https://www.jruby.org/download. - Adds the heroku-24 base image as a build target - Re-uses the ARM url format for S3 that was introduced in heroku/docker-heroku-ruby-builder#38. Both the Ruby classic buildpack and CNB are tightly coupled to this format and will attempt to download binaries from S3 with cpu architecture information on heroku-24. Once built and uploaded to S3 there should be no changes needed to the buildpack to acquire support for heroku-24 and ARM due to: - heroku/heroku-buildpack-ruby#1439 - heroku/buildpacks-ruby#284 * Remove unused directory Prior to #33 a script was generated for every Ruby version on every stack to execute docker. This is no longer needed, we can get rid of this directory.
Heroku-24 base image supports two architectures amd64 and arm64. We've built binaries for these two architectures heroku/docker-heroku-ruby-builder#38. Effectively this means that the s3 bucket that holds the Ruby binaries has an additional folder. Previously files were at
<stack>/ruby-<version>.tgz
now they are at<stack>/<arch>/ruby-<version>.tgz
but only forheroku-24
and future stacks moving forward.To support multiple architectures, the buildpack needs to detect the current architecture and whether or not the current stack supports multiple architectures.
Beyond downloading binaries, the buildpack is aware of the S3 structure to travers version numbers in order to warn customers when a newer version of a ruby version is available. We also warn customers if their current Ruby version is not available on the next stack. This behavior is implemented and tested in this PR, however we're not turning on warnings for
heroku-24
yet as customers cannot currently use it.