gjaldon / heroku-buildpack-phoenix-static

A Heroku buildpack for building Phoenix's static assets
MIT License
230 stars 224 forks source link

New versions of node break the build #112

Open grandafrato opened 3 years ago

grandafrato commented 3 years ago

When I tried building with node js 1.14+ i got this error:

/tmp/codon/tmp/buildpacks/046a7dbb0bd21772e3b9d262d0fbe72be102671d/lib/build.sh: line 29: fail_bin_install: command not found

And the whole deployment would fail. However, when I used version 10.20.1 (because that's the version used in the phoenix docs) it just suddenly did work. I did not test for any versions in between that one and 1.14.0

AaronJamesKing commented 3 years ago

I also had a problem with a newer Node version (12.15.0):

...
-----> Phoenix app detected
-----> Loading configuration and environment
       Loading config...
       Detecting assets directory
       WARNING: no package.json detected in root nor custom directory
       * assuming phoenix 1.3.x and later, please check config file
       Will use phoenix configuration:
       * assets path assets
       * mix tasks namespace phx
       Will use the following versions:
       * Node 12.15.0
       Will export the following config vars:
DATABASE_URL
POOL_SIZE
SECRET_KEY_BASE
       * MIX_ENV=prod
-----> Installing binaries
Resolving node version 12.15.0...
Downloading and installing node 12.15.0...
       Installing Node 12.15.0...
       Using default npm version 6.13.4
-----> Building dependencies
       Installing node modules
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/watchpack-chokidar2/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! invalid bin entry for package @babel/parser@7.12.17. key=parser, value=bin/babel-parser.js
npm ERR! A complete log of this run can be found in:
npm ERR!     /app/.npm/_logs/2021-02-21T01_45_52_394Z-debug.log
 !     Push rejected, failed to compile Phoenix app.
 !     Push failed

Fixed and successfully deployed using Node 10.20.1

canelle20214 commented 3 years ago

Same problem here with a deployment using Heroku. npm 6.14.13 and yarn 1.22.11

 -----> Installing binaries
remote: Resolving node version 6.14.13...
remote: /tmp/codon/tmp/buildpacks/e1ebc0ce039e2d6d22ca731aebc3580cbde46136/lib/build.sh: line 28: fail_bin_install: command not found
remote:  !     Push rejected, failed to compile Phoenix app.

Edit : The version of node was wrong. The error was solved by adding this to phoenix_static_buildpack.config :

node_version=14.17.3
npm_version=6.14.13
yarn_version=1.22.11
jaimeiniesta commented 1 year ago

This is suddenly failing for me, I hadn't done any change to the config and had been able to deploy just fine, with Node 14, but then I started getting:

remote: /tmp/codon/tmp/buildpacks/046a7dbb0bd21772e3b9d262d0fbe72be102671d/lib/build.sh: line 29: fail_bin_install: command not found

I have tried upgrading the Heroku stack, and also to the latest versions of Node and NPM in my phoenix_static_buildpack.config like:

node_version=20.2.0
npm_version=9.6.6
clean_cache=true

But I still get that error:

remote: -----> Installing binaries
remote:        clean_cache option set to true.
remote:        Cleaning out cache contents
remote:        Cleaning up old Node v14.13.0
remote: Resolving node version 20.2.0...
remote: /tmp/codon/tmp/buildpacks/046a7dbb0bd21772e3b9d262d0fbe72be102671d/lib/build.sh: line 29: fail_bin_install: command not found
remote:  !     Push rejected, failed to compile Phoenix app.

I double-checked and Node 20.2.0 is available in Heroku. I also tried with 20.1.0 and also fails.

pankamyk commented 1 year ago

I've encountered the same issue just now. No changes to buildpack config/node versions, but suddenly it keeps failing. Same error as everyone else. Npm/node versions:

node_version=13.14.0
npm_version=6.14
jaimeiniesta commented 1 year ago

Thanks for the confirmation @pankamyk - I've submitted a ticket to Heroku.

kkenan commented 1 year ago

We're experiencing same issue here.

It seems it fails on this line https://github.com/gjaldon/heroku-buildpack-phoenix-static/blob/master/lib/build.sh#LL28C30-L28C176 and it looks like https://nodebin.herokai.com is down.

curl --verbose --data-urlencode "range=18.16.0" "https://nodebin.herokai.com/v1/node/linux-x64/latest.txt"
pankamyk commented 1 year ago

I can confirm that it looks like the root of this problem lies in the nodebin.herokai.com service. Some issue with SSL

# curl -get "https://nodebin.herokai.com/v1/node/linux-x64/latest.txt"
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to nodebin.herokai.com:443
mracos commented 1 year ago

FYI, before forking myself found out that gigalixir's fork fixed it 😄

jaimeiniesta commented 1 year ago

Cool @mracos - I can confirm that deploys work fine with Gigalixir's fork 👍

joshwlewis commented 1 year ago

Hi - Heroku did run a brownout on nodebin.herokai.com. Heroku has removed all dependencies on that service and hasn't used it internally for 4 years. The service will be decommissioned very soon. I'd heavily suggest removing the dependency from this buildpack. Gigalixir's fork will likely work as a short term fix, though keep in mind that both are very old forks of https://github.com/heroku/heroku-buildpack-nodejs, so I'd suggest using the latter if possible.

jaimeiniesta commented 1 year ago

Heroku informed me that the URL https://nodebin.herokai.com/ works again now.

Still, thanks for the warning that it will be decommissioned soon @joshwlewis - let's remove that dependency.

WillRochaThomas commented 1 year ago

Same issue started happening for me today, I when I run the same command as mentioned above I also see

 # curl -get "https://nodebin.herokai.com/v1/node/linux-x64/latest.txt"
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to nodebin.herokai.com:443
edmorley commented 1 year ago

See: https://devcenter.heroku.com/changelog-items/2598

jaimeiniesta commented 1 year ago

Using Gigalixir's fork instead of this buildpack works fine.

kaikuchn commented 1 year ago

Hi - Heroku did run a brownout on nodebin.herokai.com. Heroku has removed all dependencies on that service and hasn't used it internally for 4 years. The service will be decommissioned very soon. I'd heavily suggest removing the dependency from this buildpack. Gigalixir's fork will likely work as a short term fix, though keep in mind that both are very old forks of https://github.com/heroku/heroku-buildpack-nodejs, so I'd suggest using the latter if possible.

Sadly the official buildpack only supports projects with a root-level package.json. There's a dirty hack to fix this but it ain't pretty. I.e. this would require much more work than just switching them out and changing some config.

WillRochaThomas commented 1 year ago

Using Gigalixir's fork instead of this buildpack works fine.

It does but that is obviously a very temporary fix as others have pointed out. I'd be open to contributing to updates for this buildpack, but I think it'd be really helpful to have some contributing guidelines on the repository if anyone who's worked on it before is happy to put those together?

pankamyk commented 1 year ago

Is this buildpack even maintained anymore?