Проблема с gitlab dpl с версией ruby
У меня есть приложение узла, которое я развертываю через Gitlab. Я использую образ докера
node:12.8.0
.
Недавно произошла ошибка развертывания со следующей ошибкой
$ 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
Я не могу установить Ruby2.4 через
apt-get install ruby2.4
.
Любой совет будет принят во внимание. благодаря
2 ответа
Сегодня у меня была такая же проблема в Gitlab CI.
Проблема в том, что Node по умолчанию использует debian stretch (версия 9) в качестве основы для образов докеров, по крайней мере, в версиях 12.x LTS. Эта версия debian по умолчанию имеет в репозиториях Ruby 2.3.3, что не поддерживается Faraday, для которого требуется версия, равная или выше 2.4.
Я использовал тег 12.x-buster (обратите внимание на
-buster
в конце тега версии), и в этих образах docker Node использует debian buster (версия 10) в качестве основы. В этой версии debian по умолчанию есть репозитории Ruby 2.5.5, что позволяет установить Faraday, и поэтому dpl для heroku работает нормально.
Те, кто столкнулся с этой проблемой на travis-ci, я смог сделать это, добавив
before_deploy
Команда для указания используемой версии Faraday.
...
before_deploy:
- rvm $(travis_internal_ruby) --fuzzy do ruby -S gem install faraday -v 1.8.0
deploy:
provider: heroku
api_key: $HEROKU_API_KEY
...