Запускать команды конфигурации внутри службы с помощью gitlab runner - PullRequest
0 голосов
/ 26 декабря 2018

Мне нужно включить сценарии для службыasticsearch для запуска моих тестов rspec

# config/elasticsearch.yml
script.inline: on
script.indexed: on

Я пытаюсь изменить конфигурациюasticsearch внутри контейнера докера следующим образом в моем .gitlab-ci.yml:

rspec:
  stage: test
  services:
    - mysql:5.6.42
    - name: elasticsearch:1.6.1
      command: ["echo 'script.inline: on' >> /etc/elasticsearch/elasticsearch.yml", "echo 'script.indexed: on' >> /etc/elasticsearch/elasticsearch.yml", "systemctl restart elasticsearch"]
  ...

Но запуск контейнера службы завершается неудачно с

*** WARNING: Service runner-6JNFXPMk-project-9870108-concurrent-0-elasticsearch-1 probably didn't start properly.

Health check error:
ContainerStart: Error response from daemon: Cannot link to a non running container: /runner-6LBTXPMk-project-13870108-concurrent-0-elasticsearch-1 AS /runner-6LBTXPMk-project-13870108-concurrent-0-elasticsearch-1-wait-for-service/service (executor_docker.go:1318:0s)

Service container logs:
2018-12-26T11:07:47.604151437Z /docker-entrypoint.sh: line 20: /echo 'script.inline: on' >> /etc/elasticsearch/elasticsearch.yml: No such file or directory

*********

Как настроить службу эластичного поиска в Gitlab CI для включения сценариев?

1 Ответ

0 голосов
/ 21 января 2019

Похоже, command в image эквивалентно CMD в Dockerfile.Как с использованием образов докеров с Gitlab CI документация гласит:

Команда или сценарий, которые должны использоваться в качестве команды контейнера.Он будет переведен в аргументы, переданные Docker после имени изображения.Синтаксис похож на директиву CMD Dockerfile, где каждый токен оболочки представляет собой отдельную строку в массиве.

Мне удалось решить мою проблему, добавив собственный образ докера, унаследованный от elasticsearch:1.6.1:

# Dockerfile
FROM elasticsearch:1.6.1

RUN echo 'script.disable_dynamic: false' >> /etc/elasticsearch/elasticsearch.yml
RUN echo 'script.inline: on' >> /etc/elasticsearch/elasticsearch.yml
RUN echo 'script.indexed: on' >> /etc/elasticsearch/elasticsearch.yml

CMD ["elasticsearch"]

Я создал этот образ докера и отправил его в концентратор докеров .Теперь я использую его для вызова службыasticsearch следующим образом:

# .gitlab-ci.yml
services:
  - hirurg103/elasticsearch-1.6.1-with-scripring-enabled:1.0
...
...