Прямо сейчас наши агенты Jenkins генерируют docker-compose.yml для каждого из наших проектов Rails, а затем запускают docker-compose up. Docker-compose.yml имеет основной «веб-контейнер», внутри которого находится rbenv и все другие наши зависимости Rails. Он связан с контейнером БД, который содержит тестовую БД Postgres.
Проблема возникает, когда нам действительно нужно запустить тесты и сгенерировать коды выхода. Наш CI-сервер будет развернут только в том случае, если тестовый сценарий вернет exit 0, но docker-compose всегда возвращает 0, даже если одна из команд контейнера не работает.
Другая проблема заключается в том, что контейнер БД работает бесконечно, даже после того, как веб-контейнер завершил выполнение тестов, поэтому docker-compose up
никогда не возвращается.
Есть ли способ использовать docker-compose для этого процесса? Нам нужно будет иметь возможность запускать контейнеры, но выходить после завершения веб-контейнера и возвращать его код выхода. Прямо сейчас мы застряли вручную, используя докер, чтобы развернуть контейнер БД и запустить веб-контейнер с параметром --link.
docker-compose
1.12.0 и выше. Может быть, это и ваш случай. Примером может быть:docker-compose up --exit-code-from test-unit
. Обратите внимание, что у меня это не сработало, пока я не добавилset -e
в начало своего скрипта.