I have a node app that I am deploying through Gitlab. I am using docker image node:12.8.0.
Recently it has been failing deployment with the following error
$ dpl --provider=heroku --app=$HEROKU_DEVELOPMENT_APP --api-key=$HEROKU_API_KEY --skip-cleanup
Installing deploy dependencies
ERROR: Error installing dpl-heroku:
faraday requires Ruby version >= 2.4.
Successfully installed multipart-post-2.1.1
Successfully installed ruby2_keywords-0.0.2
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- dpl/provider/heroku (LoadError)
from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /var/lib/gems/2.3.0/gems/dpl-1.10.15/lib/dpl/provider.rb:93:in `rescue in block in new'
from /var/lib/gems/2.3.0/gems/dpl-1.10.15/lib/dpl/provider.rb:68:in `block in new'
from /var/lib/gems/2.3.0/gems/dpl-1.10.15/lib/dpl/cli.rb:41:in `fold'
from /var/lib/gems/2.3.0/gems/dpl-1.10.15/lib/dpl/provider.rb:67:in `new'
from /var/lib/gems/2.3.0/gems/dpl-1.10.15/lib/dpl/cli.rb:31:in `run'
from /var/lib/gems/2.3.0/gems/dpl-1.10.15/lib/dpl/cli.rb:7:in `run'
from /var/lib/gems/2.3.0/gems/dpl-1.10.15/bin/dpl:5:in `'
from /usr/local/bin/dpl:22:in `load'
from /usr/local/bin/dpl:22:in `'
Running after_script
00:01
Running after script...
$ echo "Job - $CI_JOB_NAME ended."
Job - deploy_development ended.
Cleaning up file based variables
00:01
ERROR: Job failed: exit code 1
I am unable to install Ruby2.4 through apt-get install ruby2.4.
Any advice would be appreciated. Thanks
I had the same problem today in Gitlab CI.
The problem is that Node uses debian stretch (version 9) by default as the base for docker images, at least in the 12.x LTS versions. This version of debian has Ruby 2.3.3 by default in the repositories, which is not supported by Faraday, which requires a version equal to or greater than 2.4.
What I did was use the 12.x-buster tag (notice the -buster at the end of the version tag) and in these images of docker Node uses debian buster (version 10) as a base. This version of debian has Ruby 2.5.5 repositories by default, which allows Faraday to be installed and therefore dpl for heroku works normally.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With