Проведение испытаний в контейнере на Трэвисе
При создании приложения на Travis я пытаюсь запустить тесты в контейнере Docker. Контейнер запускается и тесты запускаются, и когда я регистрирую вывод контейнера, я вижу, что он прошел. Насколько я понимаю, я могу использовать grep для этого, как показано ниже. Итак, это мой сценарий Трэвиса:
сценарий:
docker-compose up -d
Журналы докеров dockertestapp_app_1
Docker logs 2>&1 dockertestapp_app_1 | grep -q 'npm info ok'
Я просто хочу получить выходные данные журналов контейнера, чтобы увидеть, пройдены ли тесты, но они всегда терпят неудачу. Я что-то упустил?
Заранее спасибо!
1 ответ
Чтобы избежать 60 секунд сна, которые вы описали в своем комментарии, запустите тесты вручную, выполнив что-то вроде этого:
docker exec -it dockertestapp_app_1 bash -c 'tests.py > /proc/1/fd/1'
Примечание. Я выполняю тестовый файл (в этом примере tests.py
) и настройка вывода на /proc/1/fd/1
, Таким образом, вы обычно можете использовать выражение grep, которое означает, что ваши тесты пройдены так, как вы делаете сейчас.
СОВЕТ: вам может не понадобиться выводить на /proc/1/fd/1
для журналов докера, поскольку ваш тестовый скрипт может возвращать ненулевой код завершения, чтобы указать, что тесты не пройдены. Таким образом, вам даже не нужна строка grep в вашем скрипте.