heroku / heroku-buildpack-static

[DEPRECATED] Heroku buildpack for handling static sites and single page web apps
MIT License
675 stars 427 forks source link

Add support for Heroku-20 #182

Closed edmorley closed 3 years ago

edmorley commented 3 years ago

This adds support for the new Heroku-20 stack: https://devcenter.heroku.com/articles/heroku-20-stack

The buildpack's binaries were previously generated by: https://github.com/hone/docker-nginx-builder

However that repository is quite out of date, and much of its complexity is no longer required thanks to improvements to ngx_mruby's upstream build scripts/process: https://github.com/matsumotory/ngx_mruby/tree/v2.2.3/docs/install https://github.com/matsumotory/ngx_mruby/blob/v2.2.3/build.sh

The new build script has been co-located in this buildpack to improve discoverability, and prevent needing to open PRs against multiple repos when performing updates.

The buildpack previously used a subdirectory of the Ruby buildpack's S3 bucket, however I've created a new S3 bucket to improve isolation.

This PR adds support for building new binaries for all stacks, however for now only switches to them for Heroku-20, so that the newer nginx version can be tested on the new stack for a while before backporting to the others.

The newer ngx_mruby required a compatibility fix, however that has already landed in #181.

The binaries have been uploaded already, using the newly documented steps in the README.

Closes #166. Closes W-8367040.

edmorley commented 3 years ago

Example build on Heroku-20 using a fork of create-react-app-buildpack (which wraps this buildpack) pointing at this PR's branch:

remote: -----> React.js (create-react-app) multi app detected
...
remote: =====> Downloading Buildpack: https://github.com/heroku/heroku-buildpack-static.git#edmorley-heroku-20
remote: =====> Detected Framework: Static HTML
remote: -----> Installed nginx 1.19.0 to /app/bin
remote: Using release configuration from last framework (Static HTML).
remote: -----> Discovering process types
remote:        Procfile declares types     -> (none)
remote:        Default types for buildpack -> web
remote:
remote: -----> Compressing...
remote:        Done: 63M
remote: -----> Launching...
remote:        Released v7
hone commented 3 years ago

Great work Ed!