Образ Xenial (Ubuntu 16.04) на Travis-CI поставляется с предварительно установленным Elasticsearch-5.5. Что я должен вставить в свой .travis.yml, чтобы запустить свои сборки на Elasticsearch-7.0?

2
kthy 2 Май 2019 в 14:32

3 ответа

Лучший ответ

Добавьте эти команды на ваш before_install шаг:

- curl -s -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1-amd64.deb
- sudo dpkg -i --force-confnew elasticsearch-7.0.1-amd64.deb
- sudo sed -i.old 's/-Xms1g/-Xms128m/' /etc/elasticsearch/jvm.options
- sudo sed -i.old 's/-Xmx1g/-Xmx128m/' /etc/elasticsearch/jvm.options
- echo -e '-XX:+DisableExplicitGC\n-Djdk.io.permissionsUseCanonicalPath=true\n-Dlog4j.skipJansi=true\n-server\n' | sudo tee -a /etc/elasticsearch/jvm.options
- sudo chown -R elasticsearch:elasticsearch /etc/default/elasticsearch
- sudo systemctl start elasticsearch

Изменения в jvm.options сделаны в попытке эмулировать существующий конфиг для Elasticsearch-5.5, который, как я полагаю, на самом деле задумывался о взглядах Трэвиса.

Согласно документам Travis, вы также должны добавить эту строку в ваш before_script шаг:

- sleep 10

Это сделано для того, чтобы Elasticsearch был запущен и работал, но я не проверял, действительно ли это необходимо.

4
kthy 2 Май 2019 в 11:32

Одно небольшое дополнение к @kthy ответу, который заставил меня немного спотыкаться. Вам необходимо удалить - elasticsearch из ваших служб: определение в .travis.yml, в противном случае, независимо от того, что вы вставите в before_install, служба по умолчанию переопределит его!

services:
  - elasticsearch

Удалите ^^, и тогда вы сможете продолжить шаги, которые он изложил, и все должно работать гладко.

2
Musicalmindz 13 Авг 2019 в 22:17

Если вы хотите дождаться начала упругого поиска (который может быть длиннее или короче 10 секунд), замените sleep 10 следующим:

  host="localhost:9200"
  response=""
  attempt=0

  until [ "$response" = "200" ]; do
      if [ $attempt -ge 25 ]; then
        echo "FAILED. Elasticsearch not responding after $attempt tries."
        exit 1
      fi
      echo "Contacting Elasticsearch on ${host}. Try number ${attempt}"
      response=$(curl --write-out %{http_code} --silent --output /dev/null "$host")

      sleep 1
      attempt=$[$attempt+1]
  done
2
Shiny 17 Янв 2020 в 22:28