ruby 版本的 Gitlab dpl 问题
Gitlab dpl issue with ruby version
我有一个通过 Gitlab 部署的节点应用程序。我正在使用 docker 图片 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
我无法通过apt-get install ruby2.4
安装Ruby2.4。
如有任何建议,我们将不胜感激。
谢谢
我今天在Gitlab中遇到了同样的问题CI。
问题是 Node 使用 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。
我所做的是使用 12.x-buster 标签(注意版本标签末尾的 -buster
)并且在 docker 的这些图像中节点使用 debian buster(版本 10) 作为基础。此版本的 debian 有 Ruby 2.5.5 repositories by default,它允许安装 Faraday,因此 heroku 的 dpl 可以正常工作。
那些 运行 在 travis-ci 上遇到这个问题的人,我可以通过向 specify 版本的 faraday 添加一个 before_deploy
命令来做到这一点使用。
...
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
...
我有一个通过 Gitlab 部署的节点应用程序。我正在使用 docker 图片 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
我无法通过apt-get install ruby2.4
安装Ruby2.4。
如有任何建议,我们将不胜感激。 谢谢
我今天在Gitlab中遇到了同样的问题CI。
问题是 Node 使用 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。
我所做的是使用 12.x-buster 标签(注意版本标签末尾的 -buster
)并且在 docker 的这些图像中节点使用 debian buster(版本 10) 作为基础。此版本的 debian 有 Ruby 2.5.5 repositories by default,它允许安装 Faraday,因此 heroku 的 dpl 可以正常工作。
那些 运行 在 travis-ci 上遇到这个问题的人,我可以通过向 specify 版本的 faraday 添加一个 before_deploy
命令来做到这一点使用。
...
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
...