Непрерывное развертывание Относится к возможности вашей организации создавать и выпускать изменения программного обеспечения в короткие и частые циклы.
Боль против частоты отношения — https://www.martinfowler.com/bliki/FrequencyReducesDifficulty.html
Один из идей позади Непрерывное развертывание В том, что увеличение частоты развертывания ваших изменений в производстве снизит трение, связанное с ним. Наоборот, развертывание Часто является деятельностью, которая пренебрегает до последней минуты: она воспринимается более необходимым злом, а не присущей работой программного обеспечения. Тем не менее, изменение развертывания влево, как можно раньше в жизненном цикле развития поможет возместить проблемы, зависимости и неожиданные ограничения, а не позже.
Например, постоянно развертывание будет легче понять, какие изменения вызванные проблемы, если таковые имеются, а также облегчают восстановление. Представьте себе необходимость отскакивания сотен семейных сообщений в вашей системе управления версиями, чтобы найти изменение, которое ввело проблему …
Автоматизм является ключом к достижению постоянного развертывания.
Проэкт
В этой статье мы рассмотрим, как использовать инструменты, такие как Gitlab трубопровод , Heroku и Докер Для достижения простого постоянного трубопровода развертывания.
Давайте начнем с создания простого Здравствуйте, мир заявление. С целью этой статьи я собираюсь использовать Создать ract app :
$ npx create-react-app continuous-deployment $ cd continuous-deployment $ npm start
Теперь, когда у нас есть запущенное приложение, давайте построим изображение докера, чтобы иметь возможность развернуть его к Heroku.
Контейнерное изображение
Мы собираемся написать простой Dockerfile Чтобы построить наше приложение:
FROM node:10.17-alpine COPY . . RUN sh -c 'yarn global add serve && yarn && yarn build' CMD serve -l $PORT -s build
Прежде всего, Две вещи, чтобы иметь в виду, когда строительные изображения для Heroku :
- Контейнеры — это не Беги с корневыми привилегиями
- Порт для прослушивания подается Heroku в контейнер и необходимо потреблять из переменной окружающей среды
Как вы можете видеть из Dockerfile
Определение, мы начинаем приложение, передавая Порт
Переменная среды. Теперь мы можем проверить изображение локально.
$ docker build . -t continuous-deployment:latest $ docker run -e PORT=4444 -p4444:4444
-Е
Указывает, какой порт мы собираемся слушать. Теперь вы можете попробовать ваше приложение на http://localhost: 4444 Отказ
Кроме того, я добавил Myuser
Пользователь в конце DockerFile, просто чтобы убедиться, что все еще работает с пользователем без root.
Развертывание Героку
Перед созданием нашего постоянного трубопровода развертывания давайте разверним вручную, чтобы убедиться, что наше изображение хорошо. Создайте новое приложение на Heroku и дайте ему имя. В моем случае это будет CD-Alediaferia Отказ
Теперь давайте тег и подтолкните наш образ к реестре Heroku после входа в систему.
$ heroku container:login $ docker tagregistry.heroku.com/ /web $ docker push registry.heroku.com/ /web
И выпустить его прямо в Heroku:
$ heroku container:release -a web
Теперь вы должны успешно приложение и работать на Heroku в этот момент.
Трубопровод GitLab
В этом пункте мы собираемся настроить кусочку трубопровода на GitLab, чтобы мы могли постоянно развернуть наше приложение. Тут следует за .gitlab-ci.yml
файл, который я настроил для моего Репозиторий Отказ
В приведенном выше фрагменте мы определили две работы: build_image
и Выпуск
Отказ
build_image.image.
Эта работа указывает, как создать наш документ докера. Если вы посмотрите внимательно, вы на самом деле собираетесь заметить, что я не использую Docker конкретно, но Buildah Отказ Buildah
Является ли OCI-совместимый контейнерский строительный инструмент, который способен производить документ Docker с некоторыми Незначительная конфигурация Отказ
выпускать
Эта работа выполняет фактическое освобождение, нажав на ваше приложение Heroku.
Дополнительная настройка
Прежде чем пробовать наш конвейер, давайте настроим Heroku_api_key.
так что он может забрать Heroku
CLI, которые мы собираемся использовать в определении трубопровода.
Вариальная настройка переменных трубопроводов GitLab
Толкая в Gitlab.
Теперь, когда мы все настроили, мы готовы толкать наш код в трубопровод развертывания.
Трубопровод GitLab в действии
Давайте посмотрим на шаг сборки, что GitLab успешно выполнен.
Gitlab, толкая в реестр Heroku
Первая строка использует Buildah
построить изображение. Это работает в значительной степени, как Докер
И я использовал --iidfile
Чтобы экспортировать идентификатор изображения в файл, который я затем читаю из командной строки в последующем вызове.
Вторая линия просто подталкивает к реестру Heroku. Обратите внимание, как легко я могу войти в систему, делая kreds = _: $ (heroku auth: токен)
: Это говорит Buildah
Чтобы использовать токен, предоставленный Heroku, чтобы войти в реестр.
Работа развертывания, наконец, так же просто, как:
$ heroku container:release -a cd-alediaferia web
Заключение
Мое приложение, наконец, развернуто, и все произошло автоматически после моего толчка владелец
. Это круто, потому что теперь я могу постоянно доставлять мои изменения в производстве без боли.
Мое успешно развернутое приложение
Я надеюсь, тебе понравилось этот пост. Дайте мне знать в комментариях и следовать за мной на Twitter Если вы хотите оставаться в курсе информации о методах разработки и программного обеспечения.
Это пост появился первым на Основная нить ALE Отказ
Оригинал: «https://dev.to/alediaferia/continuous-deployment-with-gitlab-docker-and-heroku-324j»