Зараз наші агенти Jenkins генерують docker-compose.yml для кожного з наших проектів Rails, а потім запускають docker-compose. У docker-compose.yml є основний "веб-" контейнер, який містить rbenv та всі інші наші залежності Rails. Він пов’язаний з контейнером БД, який містить тестову БД Postgres.
Проблема виникає, коли нам потрібно фактично запустити тести та сформувати коди виходу. Наш сервер CI буде розгортатися лише в тому випадку, якщо тестовий скрипт повертає вихід 0, але docker-compose завжди повертає 0, навіть якщо одна з команд контейнера не вдається.
Інша проблема полягає в тому, що контейнер БД працює необмежено довго, навіть після того, як веб-контейнер завершує тестування, тому docker-compose up
ніколи не повертається.
Чи можна використати docker-compose для цього процесу? Нам би потрібно було запустити контейнери, але вийти після завершення веб-контейнера і повернути його код виходу. Зараз ми застрягли вручну за допомогою docker, щоб закрутити контейнер БД і запустити веб-контейнер з опцією --link.
docker-compose
1.12.0 і вище. Можливо, це теж ваш випадок. Прикладом може бути:docker-compose up --exit-code-from test-unit
. Зверніть увагу, що це не працювало для мене, поки я не додав aset -e
на початку свого сценарію.