Непрерывная интеграция с помощью Docker
Непрерывная интеграция (CI) — это часть процесса разработки, когда вы стремитесь добиться слияния ваших изменений кода с основной ветвью проекта. На этом этапе команды разработчиков проводят тесты и сборки, чтобы убедиться, что изменения кода не вызывают нежелательного или неожиданного поведения.
Есть несколько вариантов использования Docker на этом этапе разработки, даже если вы не собираетесь упаковывать свое приложение в образ контейнера.
Docker как среда сборки
Контейнеры — это воспроизводимые, изолированные среды, которые дают предсказуемые результаты. Сборка и тестирование приложения в контейнере Docker облегчает предотвращение непредвиденного поведения. Используя Dockerfile, вы определяете точные требования к среде сборки, включая время выполнения программ, операционную систему, двоичные файлы и многое другое.
Использование Docker для управления средой сборки также облегчает обслуживание. Например, обновление до новой версии среды выполнения программ может быть таким же простым, как изменение тега или дайджеста в Docker-файле. Нет необходимости подключаться по SSH к домашней виртуальной машине, чтобы вручную переустановить новую версию и обновить соответствующие конфигурационные файлы.
Кроме того, как вы ожидаете, что сторонние пакеты с открытым исходным кодом будут безопасными, то же самое должно быть и с вашей средой сборки. Вы можете сканировать и индексировать образ сборки, как и любое другое контейнерное приложение.
Следующие ссылки содержат инструкции о том, как начать использовать Docker для создания приложений в CI:
Docker в Docker
Вы также можете использовать Dockerized среду сборки для создания образов контейнеров с помощью Docker. Т. е. ваша среда сборки запускается внутри контейнера, который сам по себе оборудован для запуска сборок Docker. Данный метод называется «Docker в Docker».
Docker предоставляет официальный Docker-образ, который вы можете использовать для этой цели.
Что дальше
Docker поддерживает множество официальных GitHub Actions, которые вы можете использовать для создания, аннотирования и отправки образов контейнеров на платформу GitHub Actions. Смотрите Введение в GitHubActions, чтобы узнать больше и начать работу.