тесты рельсов не работают в трубопроводе Гитлаб - PullRequest
0 голосов
/ 04 марта 2019

После того, как я хочу проверить свой код rails автоматически после нажатия на него, чтобы убедиться, что мой тест не выполняется.

мой этап тестирования моего кода выглядит следующим образом:

test_code:
  stage: test_code
  script:
    - docker pull $CONTAINER_IMAGE:test || true
    - docker build -f Dockerfile.test --cache-from $CONTAINER_IMAGE:test --tag $CONTAINER_IMAGE:test .
    - docker run --rm $CONTAINER_IMAGE:test rails db:migrate RAILS_ENV=test && rails test RAILS_ENV=test
    - docker push $CONTAINER_IMAGE:test

этовывод из конвейера:

$ docker run --rm $CONTAINER_IMAGE:test rails db:migrate RAILS_ENV=test && bundle exec rails test
== 20181005152311 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0014s
== 20181005152311 CreateUsers: migrated (0.0014s) =============================

/bin/sh: eval: line 86: rails: not found
ERROR: Job failed: exit code 127

Я не понимаю, почему команда после "&&" не распознается.

1 Ответ

0 голосов
/ 04 марта 2019

Чтобы запустить несколько команд в Docker, используйте /bin/bash -c и точку с запятой ; или вы также можете использовать команды конвейера внутри контейнера Docker

Вы можете попробовать что-то вроде этого:

docker run --rm $CONTAINER_IMAGE:test /bin/bash -c "RAILS_ENV=test && rails test RAILS_ENV=test"
...