Правильный способ создания конвейера ci / cd для докера - PullRequest
0 голосов
/ 24 сентября 2019

Я играю с Docker и пытаюсь реализовать его, в настоящее время у меня есть один проект, который был полностью перенесен в Docker.Проект находится в bitbucket, который включает в себя Dockerfile и docker-compose.yml.

хотел знать, каков наилучший способ или лучшие практики для реализации конвейера CI / CD для докера с нуля, который будет проходить через всепроцесс создания образа из bitbucket, загрузки нового изображения с обновлениями в репозиторий, тестирования его в qa / stg env и последующего развертывания его в экземплярах prod.

После небольшого исследования я увидел, что этого можно достичь с помощью Jenkins / Ansible, чтобы инициировать процесс сборки нового образа и затем загрузить его в репозиторий, такой как dockerhub или ECR в AWS, при реализации сторожевого таймера для отслеживания изменений.для изображения в хранилище против запущенного изображения на хосте.Похоже, есть много других способов, которые могли бы достичь этого, но я путаюсь со всеми доступными вариантами.

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

Спасибо за помощь!

1 Ответ

0 голосов
/ 26 сентября 2019

Простой и эффективный подход в вашем случае будет следующим:

Для конвейера CI вы можете применить триггеры сборки Jenkins для PR вашего репозитория Git и проверить все свои юнит-тесты и тесты интеграции, если все они успешны, затем уведомить статустестов для вашего репозитория git.Поскольку это уведомление активирует кнопку слияния, если все тесты пройдены, в противном случае это не так.(GitHub обладает такой функциональностью, не знаю, как насчет битбакета)

Для части компакт-диска, поскольку ваш код является битбакетом, вы должны написать и добавить Jenkinsfile в базовый каталог репозитория, выполнив следующие этапы в Jenkinsfile.

  1. Checkout SCM На этом этапе клонируйте репозиторий (который в итоге клонирует последнюю ветку master)

  2. Создание кода На этом этапе создайте свой сервис с помощью docker-composeфайл (он должен содержать ваш последний код в контейнере, который создан с использованием вашего Dockerfile)

  3. Проверка вашего кода На этом этапе запустите все ваши модульные тесты и интеграционные тесты, если все тесты пройдут только тогдапереходите к следующему этапу, в противном случае сборка не удалась.

  4. Push-образы На этом этапе опубликуйте свой образ докера в реестре докеров (например, dockerhub)

  5. Развертывание изменений На этом этапе разверните службу на рабочем сервере, используя последние образы из реестра Docker

...