diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..eb649ca --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,57 @@ +name: build +on: [push, pull_request] +jobs: + build: + if: "!contains(github.event.head_commit.message, '[skip ci]')" + strategy: + fail-fast: false + matrix: + include: + - ruby: 2.7 + gemfile: Gemfile + elasticsearch: 7.10.0 + - ruby: 2.6 + gemfile: gemfiles/activerecord52.gemfile + elasticsearch: 7.0.0 + - ruby: 2.5 + gemfile: gemfiles/activerecord51.gemfile + elasticsearch: 6.8.13 + - ruby: 2.4 + gemfile: gemfiles/activerecord50.gemfile + elasticsearch: 6.0.0 + - ruby: 2.7 + gemfile: gemfiles/mongoid7.gemfile + elasticsearch: 7 + mongodb: true + - ruby: 2.6 + gemfile: gemfiles/mongoid6.gemfile + elasticsearch: 6 + mongodb: true + runs-on: ubuntu-latest + env: + BUNDLE_GEMFILE: ${{ matrix.gemfile }} + steps: + - uses: actions/checkout@v2 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + bundler-cache: true + - run: bundle update + - uses: actions/cache@v2 + with: + path: ~/elasticsearch + key: ${{ runner.os }}-elasticsearch-${{ matrix.elasticsearch }} + - uses: ankane/setup-elasticsearch@v1 + with: + elasticsearch-version: ${{ matrix.elasticsearch }} + plugins: | + analysis-kuromoji + analysis-smartcn + analysis-stempel + analysis-ukrainian + - uses: ankane/setup-mongodb@v1 + if: ${{ matrix.mongodb }} + - run: | + sudo apt-get install redis-server + sudo systemctl start redis + - run: bundle exec rake test diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 02d8487..0000000 --- a/.travis.yml +++ /dev/null @@ -1,46 +0,0 @@ -dist: bionic -language: ruby -gemfile: - - Gemfile -services: - - postgresql - - redis-server -addons: - postgresql: 10 -script: bundle exec rake test -before_install: - - createdb searchkick_test || true - - ./test/ci/install_elasticsearch.sh -cache: - directories: - - $HOME/elasticsearch -env: - - ELASTICSEARCH_VERSION=7.10.0 -jdk: openjdk11 -jobs: - include: - - rvm: 2.7 - gemfile: Gemfile - - rvm: 2.6 - gemfile: test/gemfiles/activerecord52.gemfile - env: ELASTICSEARCH_VERSION=7.0.0 - - rvm: 2.5 - gemfile: test/gemfiles/activerecord51.gemfile - env: ELASTICSEARCH_VERSION=6.8.13 - - rvm: 2.4 - gemfile: test/gemfiles/activerecord50.gemfile - env: ELASTICSEARCH_VERSION=6.0.0 - - rvm: 2.7 - gemfile: test/gemfiles/mongoid7.gemfile - services: - - mongodb - - redis-server - - rvm: 2.6 - gemfile: test/gemfiles/mongoid6.gemfile - services: - - mongodb - - redis-server -notifications: - email: - on_success: never - on_failure: change diff --git a/README.md b/README.md index b53e17e..9f27f41 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Check out [Searchjoy](https://github.com/ankane/searchjoy) for analytics and [Au :tangerine: Battle-tested at [Instacart](https://www.instacart.com/opensource) -[![Build Status](https://travis-ci.org/ankane/searchkick.svg?branch=master)](https://travis-ci.org/ankane/searchkick) +[![Build Status](https://github.com/ankane/searchkick/workflows/build/badge.svg?branch=master)](https://github.com/ankane/searchkick/actions) ## Contents diff --git a/gemfiles/activerecord50.gemfile b/gemfiles/activerecord50.gemfile new file mode 100644 index 0000000..24fcd0c --- /dev/null +++ b/gemfiles/activerecord50.gemfile @@ -0,0 +1,16 @@ +source "https://rubygems.org" + +gemspec path: ".." + +gem "rake" +gem "minitest", ">= 5" +gem "sqlite3", "~> 1.3.0" +gem "activerecord", "~> 5.0.0" +gem "actionpack", "~> 5.0.0" +gem "activejob", "~> 5.0.0", require: "active_job" +gem "elasticsearch", "~> 6" +gem "elasticsearch-xpack", "~> 6" +gem "redis" +gem "connection_pool" +gem "kaminari" +gem "gemoji-parser" diff --git a/gemfiles/activerecord51.gemfile b/gemfiles/activerecord51.gemfile new file mode 100644 index 0000000..60b624c --- /dev/null +++ b/gemfiles/activerecord51.gemfile @@ -0,0 +1,16 @@ +source "https://rubygems.org" + +gemspec path: ".." + +gem "rake" +gem "minitest", ">= 5" +gem "sqlite3" +gem "activerecord", "~> 5.1.0" +gem "actionpack", "~> 5.1.0" +gem "activejob", "~> 5.1.0", require: "active_job" +gem "elasticsearch", "~> 6" +gem "elasticsearch-xpack", "~> 6" +gem "redis" +gem "connection_pool" +gem "kaminari" +gem "gemoji-parser" diff --git a/gemfiles/activerecord52.gemfile b/gemfiles/activerecord52.gemfile new file mode 100644 index 0000000..aecca29 --- /dev/null +++ b/gemfiles/activerecord52.gemfile @@ -0,0 +1,16 @@ +source "https://rubygems.org" + +gemspec path: ".." + +gem "rake" +gem "minitest", ">= 5" +gem "sqlite3" +gem "activerecord", "~> 5.2.0" +gem "actionpack", "~> 5.2.0" +gem "activejob", "~> 5.2.0", require: "active_job" +gem "elasticsearch", "~> 7" +gem "elasticsearch-xpack", "~> 7" +gem "redis" +gem "connection_pool" +gem "kaminari" +gem "gemoji-parser" diff --git a/gemfiles/activerecord61.gemfile b/gemfiles/activerecord61.gemfile new file mode 100644 index 0000000..b7b3f1f --- /dev/null +++ b/gemfiles/activerecord61.gemfile @@ -0,0 +1,16 @@ +source "https://rubygems.org" + +gemspec path: ".." + +gem "rake" +gem "minitest", ">= 5" +gem "sqlite3" +gem "activerecord", "~> 6.1.0.rc1" +gem "actionpack", "~> 6.1.0.rc1" +gem "activejob", "~> 6.1.0.rc1", require: "active_job" +gem "elasticsearch", "~> 7" +gem "elasticsearch-xpack", "~> 7" +gem "redis" +gem "connection_pool" +gem "kaminari" +gem "gemoji-parser" diff --git a/gemfiles/cequel.gemfile b/gemfiles/cequel.gemfile new file mode 100644 index 0000000..6707378 --- /dev/null +++ b/gemfiles/cequel.gemfile @@ -0,0 +1,9 @@ +source "https://rubygems.org" + +gemspec path: ".." + +gem "rake" +gem "minitest", ">= 5" +gem "cequel" +gem "activejob" +gem "redis" diff --git a/gemfiles/mongoid6.gemfile b/gemfiles/mongoid6.gemfile new file mode 100644 index 0000000..1ffb9e6 --- /dev/null +++ b/gemfiles/mongoid6.gemfile @@ -0,0 +1,14 @@ +source "https://rubygems.org" + +gemspec path: ".." + +gem "rake" +gem "minitest", ">= 5" +gem "mongoid", "~> 6.0.0" +gem "activejob", require: "active_job" +gem "redis" +gem "elasticsearch", "~> 7" +gem "elasticsearch-xpack", ">= 7.8.0" +gem "actionpack" +gem "kaminari" +gem "gemoji-parser" diff --git a/gemfiles/mongoid7.gemfile b/gemfiles/mongoid7.gemfile new file mode 100644 index 0000000..23c2e43 --- /dev/null +++ b/gemfiles/mongoid7.gemfile @@ -0,0 +1,14 @@ +source "https://rubygems.org" + +gemspec path: ".." + +gem "rake" +gem "minitest", ">= 5" +gem "mongoid", "~> 7.0.0" +gem "activejob", require: "active_job" +gem "redis" +gem "elasticsearch", "~> 7" +gem "elasticsearch-xpack", ">= 7.8.0" +gem "actionpack" +gem "kaminari" +gem "gemoji-parser" diff --git a/gemfiles/nobrainer.gemfile b/gemfiles/nobrainer.gemfile new file mode 100644 index 0000000..c1b0563 --- /dev/null +++ b/gemfiles/nobrainer.gemfile @@ -0,0 +1,9 @@ +source "https://rubygems.org" + +gemspec path: ".." + +gem "rake" +gem "minitest", ">= 5" +gem "nobrainer", ">= 0.21.0" +gem "activejob" +gem "redis" diff --git a/test/ci/install_elasticsearch.sh b/test/ci/install_elasticsearch.sh deleted file mode 100755 index 3e358c7..0000000 --- a/test/ci/install_elasticsearch.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash - -set -e - -CACHE_DIR=$HOME/elasticsearch/$ELASTICSEARCH_VERSION - -if [ ! -d "$CACHE_DIR" ]; then - if [[ $ELASTICSEARCH_VERSION == 7* ]]; then - URL=https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$ELASTICSEARCH_VERSION-linux-x86_64.tar.gz - else - URL=https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$ELASTICSEARCH_VERSION.tar.gz - fi - - wget -O elasticsearch-$ELASTICSEARCH_VERSION.tar.gz $URL - tar xvfz elasticsearch-$ELASTICSEARCH_VERSION.tar.gz - mv elasticsearch-$ELASTICSEARCH_VERSION $CACHE_DIR - - cd $CACHE_DIR - - bin/elasticsearch-plugin install analysis-kuromoji - if [[ $ELASTICSEARCH_VERSION != 6.0.* ]]; then - bin/elasticsearch-plugin install analysis-nori - fi - bin/elasticsearch-plugin install analysis-smartcn - bin/elasticsearch-plugin install analysis-stempel - bin/elasticsearch-plugin install analysis-ukrainian -else - echo "Elasticsearch cached" -fi - -cd $CACHE_DIR -bin/elasticsearch -d -for i in {1..12}; do wget -O- -v http://127.0.0.1:9200/ && break || sleep 5; done diff --git a/test/gemfiles/activerecord50.gemfile b/test/gemfiles/activerecord50.gemfile deleted file mode 100644 index 642c6ea..0000000 --- a/test/gemfiles/activerecord50.gemfile +++ /dev/null @@ -1,16 +0,0 @@ -source "https://rubygems.org" - -gemspec path: "../../" - -gem "rake" -gem "minitest", ">= 5" -gem "sqlite3", "~> 1.3.0" -gem "activerecord", "~> 5.0.0" -gem "actionpack", "~> 5.0.0" -gem "activejob", "~> 5.0.0", require: "active_job" -gem "elasticsearch", "~> 6" -gem "elasticsearch-xpack", "~> 6" -gem "redis" -gem "connection_pool" -gem "kaminari" -gem "gemoji-parser" diff --git a/test/gemfiles/activerecord51.gemfile b/test/gemfiles/activerecord51.gemfile deleted file mode 100644 index b92749e..0000000 --- a/test/gemfiles/activerecord51.gemfile +++ /dev/null @@ -1,16 +0,0 @@ -source "https://rubygems.org" - -gemspec path: "../../" - -gem "rake" -gem "minitest", ">= 5" -gem "sqlite3" -gem "activerecord", "~> 5.1.0" -gem "actionpack", "~> 5.1.0" -gem "activejob", "~> 5.1.0", require: "active_job" -gem "elasticsearch", "~> 6" -gem "elasticsearch-xpack", "~> 6" -gem "redis" -gem "connection_pool" -gem "kaminari" -gem "gemoji-parser" diff --git a/test/gemfiles/activerecord52.gemfile b/test/gemfiles/activerecord52.gemfile deleted file mode 100644 index 5c6ba91..0000000 --- a/test/gemfiles/activerecord52.gemfile +++ /dev/null @@ -1,16 +0,0 @@ -source "https://rubygems.org" - -gemspec path: "../../" - -gem "rake" -gem "minitest", ">= 5" -gem "sqlite3" -gem "activerecord", "~> 5.2.0" -gem "actionpack", "~> 5.2.0" -gem "activejob", "~> 5.2.0", require: "active_job" -gem "elasticsearch", "~> 7" -gem "elasticsearch-xpack", "~> 7" -gem "redis" -gem "connection_pool" -gem "kaminari" -gem "gemoji-parser" diff --git a/test/gemfiles/activerecord61.gemfile b/test/gemfiles/activerecord61.gemfile deleted file mode 100644 index 212f8f9..0000000 --- a/test/gemfiles/activerecord61.gemfile +++ /dev/null @@ -1,16 +0,0 @@ -source "https://rubygems.org" - -gemspec path: "../../" - -gem "rake" -gem "minitest", ">= 5" -gem "sqlite3" -gem "activerecord", "~> 6.1.0.rc1" -gem "actionpack", "~> 6.1.0.rc1" -gem "activejob", "~> 6.1.0.rc1", require: "active_job" -gem "elasticsearch", "~> 7" -gem "elasticsearch-xpack", "~> 7" -gem "redis" -gem "connection_pool" -gem "kaminari" -gem "gemoji-parser" diff --git a/test/gemfiles/cequel.gemfile b/test/gemfiles/cequel.gemfile deleted file mode 100644 index 437f14c..0000000 --- a/test/gemfiles/cequel.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -source "https://rubygems.org" - -gemspec path: "../../" - -gem "rake" -gem "minitest", ">= 5" -gem "cequel" -gem "activejob" -gem "redis" diff --git a/test/gemfiles/mongoid6.gemfile b/test/gemfiles/mongoid6.gemfile deleted file mode 100644 index f9e9a33..0000000 --- a/test/gemfiles/mongoid6.gemfile +++ /dev/null @@ -1,14 +0,0 @@ -source "https://rubygems.org" - -gemspec path: "../../" - -gem "rake" -gem "minitest", ">= 5" -gem "mongoid", "~> 6.0.0" -gem "activejob", require: "active_job" -gem "redis" -gem "elasticsearch", "~> 7" -gem "elasticsearch-xpack", ">= 7.8.0" -gem "actionpack" -gem "kaminari" -gem "gemoji-parser" diff --git a/test/gemfiles/mongoid7.gemfile b/test/gemfiles/mongoid7.gemfile deleted file mode 100644 index 44aa3e4..0000000 --- a/test/gemfiles/mongoid7.gemfile +++ /dev/null @@ -1,14 +0,0 @@ -source "https://rubygems.org" - -gemspec path: "../../" - -gem "rake" -gem "minitest", ">= 5" -gem "mongoid", "~> 7.0.0" -gem "activejob", require: "active_job" -gem "redis" -gem "elasticsearch", "~> 7" -gem "elasticsearch-xpack", ">= 7.8.0" -gem "actionpack" -gem "kaminari" -gem "gemoji-parser" diff --git a/test/gemfiles/nobrainer.gemfile b/test/gemfiles/nobrainer.gemfile deleted file mode 100644 index aa11d44..0000000 --- a/test/gemfiles/nobrainer.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -source "https://rubygems.org" - -gemspec path: "../../" - -gem "rake" -gem "minitest", ">= 5" -gem "nobrainer", ">= 0.21.0" -gem "activejob" -gem "redis" diff --git a/test/language_test.rb b/test/language_test.rb index f069779..0537d4c 100644 --- a/test/language_test.rb +++ b/test/language_test.rb @@ -52,7 +52,7 @@ class LanguageTest < Minitest::Test end def test_korean2 - skip if Searchkick.server_below?("6.4.0") + skip if Searchkick.server_below?("6.4.0") || ci? # requires https://www.elastic.co/guide/en/elasticsearch/plugins/7.4/analysis-nori.html with_options({language: "korean2"}) do -- libgit2 0.21.0