ruby - 为什么 CircleCI 变体在组合时似乎不起作用?无法让 Firefox Geckodriver 工作
问题描述
使用 Ruby2.4.0
和2.4.1
,我无法让 CircleCI 识别语言图像变体,除了-browsers
,例如声明的变体-browsers-legacy
etc 说 manifest ... not found。
https://circleci.com/docs/2.0/circleci-images/#ruby
因此,我似乎无法解决 Firefox 测试未在 CircleCI 中启动 Firefox 的问题。如果我基于我的 Circle 配置图像ruby-2.6.2-browsers
但在本地我无法安装 Ruby 版本2.6.2
,因为我的 rbenv 说没有找到定义2.6.2
然而,当2.4.1
在 CircleCI 中使用时,我得到Net::ReadTimeout
了 Firefox 没有响应(但 Chrome 有)。
当我将 CircleCI 切换为基于2.6.2-browsers
Firefox 和 Chrome 的图像时,工作正常。
所以目前我必须让我的本地 Ruby 成为2.4.0
(在我的 Gemnfile 中),因为当我尝试rbenv install 2.6.2
(对于在 CircleCI 中工作的版本)它说找不到图像定义
有没有办法让我的本地环境和 CircleCI 环境使用相同版本的 Ruby ?
现在我必须有
- 本地是
2.4.1
(在.ruby-version
文件中) .circleci/config
文件有image: circleci/ruby:2.6.2-browsers
在试图解决这个问题时,我也遇到过
- 新的 webdrivers gem 有问题,我现在不得不回到旧的 gem
- 火狐无法启动
- 其他问题
- 无法在我的 Gemfile 中指定 Ruby 版本,因为不同的环境有不同的版本(我现在避免使用任何类型的变量)
我没有在此处详细列出这些以解决问题,而是表明这些环境现在有点脆弱,多个发行者会影响哪些工作取决于
- 操作系统版本
- 红宝石版本
- 图像版本
- 火狐版本
解决方案
在某个时间点之后,较旧的补丁版本不会在 Docker Hub 上发布。如果您想要在变体图像中可用的最新软件,例如-browser
,您需要使用更高版本的 Ruby 2.4,例如 2.4.6。例如,这张图片circleci/ruby:2.4.6-browsers
。
如果由于某种原因您不能这样做,请使用 CircleCI Ruby 2.4.1 映像,标准版本而不是变体,然后为其中包含您需要的软件构建您自己的 Docker 映像。
推荐阅读
- keras - 仅对两个类使用 categorical_crossentropy
- pdf - iText 的 Alt-Text 添加示例代码不适用于使用 Acrobat 标记的 PDF
- python - 如何将 Elo 评级转换为 5 星评级系统?
- c++ - 什么时候需要修改套接字的接收缓冲区大小?
- linux - 无法在 bash 脚本中执行查找命令
- http - CGI 脚本如何知道请求者的 IP 地址?
- c# - 如何访问在 Xamarin.Forms C# 代码后面创建的组件?
- vb6 - VB6 'Out of memory' 可以在一台机器上编译,但不能在另一台机器上编译
- android - Unity3d为什么我所有的模型都在移动中闪烁?
- python - 将 boto3 BaseCondition 转换为其字符串表示形式