使用Elasticsearch::Extensions进行在CircleCI上的测试

我想做的事情

使用CI默认版本的ES进行测试。

スクリーンショット 2016-07-17 23.39.52.png

就是这样。
在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。

スクリーンショット 2016-07-17 23.50.45.png

虽然本地可以运行,但是…

这种状态。

由于什么因素导致的

原因是没有找到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配置文件里设置后,成功运行了。

スクリーンショット 2016-07-18 07.52.04.png

感受之处。

你是用 Ubuntu 的对吧。
然后,由于我一直使用的是 CentOS,所以对于执行文件的考虑一直不明确,但是嗯,可以用grep来解决那个问题。

请把下面的句子用中文进行本地化改写,只需要一种选项:

ref

    • elasticsearch-extensions/Elasticsearch/Extensions/Test/Cluster/Cluster#initialize-instance_method

 

    • Install a custom version of Elasticsearch

 

    • テスト用サンプル

 

    elasticsearchとSQL対比しながら理解
广告
将在 10 秒后关闭
bannerAds