Dev*_*anu 3 ruby heroku gitlab gitlab-ci dpl
我有一个通过 Gitlab 部署的节点应用程序。我正在使用 docker image 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
Run Code Online (Sandbox Code Playgroud)
我无法通过apt-get install ruby2.4.
任何意见,将不胜感激。谢谢
我今天在 Gitlab CI 中遇到了同样的问题。
问题是 Node默认使用debian stretch(版本 9)作为 docker 镜像的基础,至少在 12.x LTS 版本中是这样。这个版本的 debian在 repositories 中默认有Ruby 2.3.3 , Faraday 不支持,它需要等于或大于 2.4 的版本。
我所做的是使用 12.x-buster 标签(注意-buster版本标签末尾的 ),并且在这些 docker 镜像中,Node 使用 debian buster(版本 10)作为基础。这个版本的 debian默认有Ruby 2.5.5 存储库,它允许安装 Faraday,因此 heroku 的 dpl 可以正常工作。
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |