CI конвейер для докера? - PullRequest
0 голосов
/ 21 июня 2019

Какова наилучшая практика в докеризованных конвейерах проекта:

1) git pull -> запустить тесты -> сборка докера && push

2) git pull -> сборка docker -> запустить тесты -> push docker

А если второе, код находится внутри контейнера, как мы запускаем тесты?

Мне кажется, что exec определенно не вариант.

1 Ответ

1 голос
/ 21 июня 2019

Прежде всего, это очень сильно зависит от приложения, которое вы создаете, и от того, какие тесты вы выполняете ... Но вот мое мнение:

Я бы предложил второй вариант.

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

Мне нравится идея пометить встроенное изображение с помощью :COMMIT_HASH, а затем запустить тесты для этого изображения. Если у вас есть несколько этапов тестирования, это означает, что вы можете повторно использовать одно и то же изображение, так как вы пометили его хешем коммита.

Например, если ваш конвейер похож на Unit -> Integration -> E2E -> Deploy to Staging -> Deploy to Production, то на всех этапах вы сможете ссылаться на один и тот же тег по хешу коммита и быть уверенным, что то, что вы тестируете, одинаково на всех этапах ,

После завершения тестирования, просто пометьте изображение как :latest, и вы можете развернуть его в рабочей среде

Если код находится внутри контейнера, в зависимости от типов тестов, которые вы хотите запустить, вы можете создать файл docker-compose.yml для тестов, который затем сможете использовать для запуска любых других необходимых сервисов для тестирования (например, например, макет базы данных и хаб Selenium с узлами браузера)

...