使用Elasticsearch::Extensions进行在CircleCI上的测试
我想做的事情
使用CI默认版本的ES进行测试。

就是这样。
在CI上使用默认版本的ES进行测试。*原因不赘述
由于遇到了一些问题,所以将其作为备忘录发布。
只需要一个选项,请用中文将以下内容进行释义:
针对特定版本的ES进行测试。
大致上搜索可以找到一些内容,比如安装自定义版本的Elasticsearch,或在CircleCI上进行Elasticsearch的设置,但这些都不是我的目标。
无论哪一个选项,用途都是相同的。
如果你需要定制版本,可以从你的构建中下载并启动。
因为它超出了本次讨论的范围,所以省略不提。
遇到困难的方面
所以,即使在circle.yml中进行了上述配置,也无法在CI中执行rspec。
RSpec.configure do |config|↲
config.before(:all, :elasticsearch) do↲
WebMock.disable_net_connect!(allow_localhost: true)↲
Elasticsearch::Extensions::Test::Cluster.start port: 9250 unless Elasticsearch::Extensions::Test::Cluster.running?(on: 9250)↲# ここで起動するはずだが。。。
end↲
↲
config.after(:all, :elasticsearch) do↲
Elasticsearch::Extensions::Test::Cluster.stop port: 9250 if Elasticsearch::Extensions::Test::Cluster.running?(on: 9250)↲
end↲
end↲
无法启动TEST::Cluster。

虽然本地可以运行,但是…
这种状态。
由于什么因素导致的
原因是没有找到ES的可执行文件。换句话说,在本地环境中,由于将ES的可执行文件添加到了路径中,所以能够执行。
$ ll /usr/local/bin/elasticsearch
/usr/local/bin/elasticsearch -> /usr/local/src/elasticsearch-2.3.4/bin/elasticsearch
在Circle CI中,执行文件的位置在哪里?
如果是下载本地或者自定义版本的话,可以知道安装的位置,这样就可以在TEST_CLUSTER_COMMAND中指定执行文件的路径。
然而,对于像此次使用CI的默认ES那样,由于其位置不明,所以需要通过SSH进入CI的容器进行搜索并找到。
/usr/share/elasticsearch/bin/elasticsearch
有一个在circle.yml配置文件里设置后,成功运行了。

感受之处。
你是用 Ubuntu 的对吧。
然后,由于我一直使用的是 CentOS,所以对于执行文件的考虑一直不明确,但是嗯,可以用grep来解决那个问题。
请把下面的句子用中文进行本地化改写,只需要一种选项:
ref
-
- elasticsearch-extensions/Elasticsearch/Extensions/Test/Cluster/Cluster#initialize-instance_method
-
- Install a custom version of Elasticsearch
-
- テスト用サンプル
- elasticsearchとSQL対比しながら理解