Рубрики
Uncategorized

Непрерывное развертывание с GitLab, Docker и Heroku

Непрерывное развертывание относится к способности вашей организации для создания и выпуска программного обеспечения C … Теги с DevOps, учебником, докером, реагируют.

Непрерывное развертывание Относится к возможности вашей организации создавать и выпускать изменения программного обеспечения в короткие и частые циклы.

Боль против частоты отношения — 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 tag  registry.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»