CircleCI上でElasticsearchを動作させてテストする方法を調べてみました。
circle.ymlの設定
CircleCI上での設定はcircle.ymlというファイルで行います。この設定をElasticSearch用に記載する事で、CircleCI上でElasticSearchを動かしてテストできるようになります。
基本的には
machine:
services:
- elasticsearch
を設定すれば良いです。ただし、このままだとElasticsearchのバージョンが0.90.2になってしまうので、指定したバージョンを使いたい場合は以下のように追記が必要です。
machine:
services:
- elasticsearch
dependencies:
cache_directories:
- elasticsearch-1.1.0
post:
- if [[ ! -e elasticsearch-1.1.0 ]]; then wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.0.tar.gz && tar -xvf elasticsearch-1.1.0.tar.gz; fi
- elasticsearch-1.1.0/bin/elasticsearch: {background: true}
dependenciesのcache_directoriesを指定する事によって毎回Elasticsearchをインストールするコストを省く事ができます。
このように設定してElasticsearch用のテストをCircleCI上でテストすると
HTTPConnectionPool(host='127.0.0.1', port=9200): Max retries exceeded with url: /haystack/modelresult/_search (Caused by <class 'socket.error'>: [Errno 111] Connection refused)
.
のようなElasticsearchの接続エラーがでなくなります。
参考
- Install a custom version of Elasticsearch https://circleci.com/docs/installing-elasticsearch
- Django でのテスト http://qiita.com/seizans/items/2f78f2a263c63c36b267