Рубрики
Без рубрики

Настройка CI / CD на GitLab для развертывания приложения Python Flask на Heroku

Автор оригинала: Bharath Kallur.

Недавно я столкнулся с проблемой развертывания веб-приложения Python Flask в Heroku. Код приложения был размещен в GitLab.

Heroku поддерживает развертывание приложения из GitHub, Dropbox вместе с обычным гитом Heroku. Это было довольно некоторое время, так как я использовал Heroku. Мне было интересно, сможете ли я развернуть код непосредственно с моего репозитория GitLab вместо использования любого из упомянутых выше источников.

Я не смог найти никакой информации или документации вокруг развертывания приложений, размещенных в репозитории GitLab, чтобы Heroku Отказ Я немного просматривал GitLab, и оказалось, что кроме того, чтобы помочь тестировать и построить свой проект, Gitlab CI также может помочь Развертывание Вы прилагаете в свою хостинговую инфраструктуру. Теперь я был заинтригован.

Прежде чем я углубляюсь в то, как я развернул приложение, я бы хотел объяснить преимущества использования GitLab или Github, когда вы можете легко получить вещи с Git Heroku Git.

  1. Упрощенное обслуживание кода – С помощью хостинга для хранения кодов, таких как GitHub и Gitlab, обслуживание кода, легко.
  2. Настройка трубопроводов – С GitLab мы можем написать нашемую Ямл Файл и включите библиотеки, необходимые для запуска нашего приложения.
  3. Для лучшего понимания непрерывной интеграции и непрерывного развития (CI/CD) – Для начинающих эта настройка помогает вам понять рабочий процесс кодирования тестирования -> контроль версий -> Техническое обслуживание кода -> Развертывание приложений.

Вот шаги, необходимые для развертывания вашего приложения, размещенного в GitLab в Heroku. Шаги здесь предполагают, у вас уже есть хорошее понимание Python, колба, контроль версий, Gitlab и Heroku. Эта запись также полезна для того, кто только начинает. Я сохранил его как можно проще, чтобы добиться и бегать.

Загрузка проекта в GitLab

  1. Создайте виртуальную среду Python для нас для использования. Попасть в виртуальную среду.
  2. Создайте образец приложения Python Flask на вашем компьютере.
  3. Убедитесь, что все работает нормально.
  4. Запустите команду PIP Freeze> требования. TXT из главной папки приложения, чтобы выявить все требования для запуска вашего приложения.
  5. Создайте Proffile, который используется Heroku, чтобы объявить, какие команды запускаются вашим приложением на платформе Heroku. Procfile обычно состоит из веб-сервера, используемого для запуска приложения. В нашем случае будем использовать Gunicorn, HTTP-сервер Python WSGI по умолчанию. Содержание вашего Proffile будет Веб: Gunicorn <имя файла App.py>: < Имя приложения> Где имя приложения обычно является «приложением». Поместите этот файл в основной папку приложения.
  6. Теперь войдите в систему (или регистрация) в GitLab и создать проект. В тот момент, когда вы это делаете, вы получите стандартный набор инструкций о том, как «ссылку» свой код на вашей машине разработки в проекте GitLab. Просто следуйте командам, а после этого вы можете сделать Git Push или Git Thing to/из этого проекта. Это немного сложного шага, и ваше последнее утверждение должно выглядеть что-то вроде Git Push -U Origin Master Отказ После выполнения на обновлении страницы проекта на GitLab вы должны увидеть весь ваш код в GitLab.

Связывание Gitlab и Heroku

  1. Войдите в Heroku Web Portal и создать приложение. Дайте это хорошее имя и выбор времени выполнения.
  2. Теперь в папке My_app на вашей машине разработки создайте файл под названием «.gitlab-Ci.yaml» (обратите внимание на «.» В начале).
  3. Этот файл YAML будет иметь следующую структуру.
my_app_file_name:
 script:
 — apt-get update -qy
 — apt-get install -y python-dev python-pip
 — pip install -r requirements.txt
 — export MONGOHQ_URL=$MONGO_URL
 
production:
 type: deploy
 script:
 — apt-get update -qy
 — apt-get install -y ruby-dev
 — gem install dpl
 — dpl — provider=heroku — app=task-mgmt-app — api-key=$HEROKU_SECRET_KEY
 only:
 — master
  1. Измените my_app_file_name на имя файла вашего приложения Flask. Вам нужно установить переменную heroku_secret_key в переменных проекта. Вы получите этот ключ в Heroku Dashboard Отказ Чтобы установить его в вашем проекте GitLab, перейдите в Настройки> CI/CD трубопроводы и искать Секретные переменные. При использовании этих переменных в YAML нам нужно добавить переменную со знаком «$». Это хорошая практика, чтобы не делиться секретными ключами с кем угодно, а также ограничивать доступ к ним в проекте.
  2. Вы почти там. Запустите команду Git Добавить .gitlab-ci.yml и Git Commit -M и Git Push -U Origin Master Отказ Вы увидите файл в репозитории GitLab сейчас.
  3. На странице GitLab “My Dashboard” нажмите на Трубопроводы> Работа чтобы увидеть работу, которая начала бежать.
  4. Если вы используете базу данных в вашем приложении, вы можете связать его в приложение, разместив детали в файле .gitlab-Ci.yaml. Пожалуйста, проверьте здесь Например. Я использовал Mongdb в моем заявлении. Heroku предоставляет добавить набор бесплатных библиотек/приложений к вашему приложению. Есть MLAB Link для добавления MongoDB.

Ура! Теперь вы успешно интегрировали свой Gitlab с Heroku с конфигурацией CI/CD. Сделайте все изменения кода, которые вы хотите в своем репозитории, нажмите его в проект GitLab и посмотрите на начало работы каждый раз, когда есть код нажима. Для текущей настройки я использовал Gitlab Publics Punners здесь Отказ Вы можете настроить пользовательский бегун GitLab и установить соответствующую конфигурацию.

Полезные ссылки:

  1. Создание Heroku Remote
  2. Настройка CI/CD из GitLab на Heroku
  3. Применение по управлению задачами – репозиторий: GitLab, развернутый на Heroku