Добавление промежуточной среды в рабочий процесс
В настоящее время у меня есть две среды, в которых я работаю: development
локально и production
на Heroku.
Я хотел бы добавить среду staging
на Heroku, чтобы увидеть, что все идет так, как ожидалось, прежде чем подталкивать приложение к пользователям. Предпочтительно, среда staging
должна иметь те же настройки и данные, что и среда production
.
Каковы шаги, необходимые для выполнения вышеуказанного?
Ответы
Ответ 1
Сначала предрасположенности, мне нравится, чтобы мои геройки git создавались как постановка и производство, поэтому вы можете легко использовать git push-постановку/создание для развертывания для каждого из них. Я буду использовать эту настройку, чтобы объяснить, как создать промежуточную версию.
- создайте
config/environments/staging.rb
, который вы скопируете из `config/environment/production.rb '
- добавить запись database.yml для промежуточной базы данных (не обязательно для геройку, но не может повредить)
- Сохраните файл .env(если он у вас есть)
- Установите плагин heroku-config на
heroku plugins:install git://github.com/ddollar/heroku-config.git
- потяните настройки среды от героку (производственный сервер) с помощью
heroku config:pull --remote production
- внесите изменения в файл .env и не забудьте добавить эти значения в конфигурацию:
RACK_ENV=staging RAILS_ENV=staging
, чтобы он использовал конфигурацию промежуточной среды.
- fork the heroku окружающая среда с
heroku fork -a production staging
(это имена героя, которые вы хотите вместо создания/постановки)
- Сделайте конфигурацию `heroku: push -remote staging '
- Обязательно развернуть код для правильной настройки env
Вы также можете прочитать этот учебник, я думаю, что использовал его, чтобы начать с нескольких envs на heroku:
https://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations
Ответ 2
Я нашел heroku fork -a PRODUCTION_APP_NAME NEW_STAGE_APP_NAME
более быстрый и простой способ сделать это... он создает новое приложение, копирует все (включая базу данных postgres). Затем я вошел и вручную переопределил аддоны на более мелкие планы, когда это имело смысл (например, база данных начального уровня).
Фактически, мы начали использовать относительно новый heroku pipeline:promote
для автоматического управления (и ОЧЕНЬ быстро), нажимая скомпилированный слизень из этапа в производство. (Предполагается, что у вас есть какие-либо env-специфические настройки через настройки или переменные окружения, поэтому пул кода одинаков.)
Ответ 3
Обратите внимание, что процедура, поясняемая berislavbabic, не рекомендуется в соответствии со следующим руководством на сайте Heroku: https://devcenter.heroku.com/articles/multiple-environments#managing-staging-and-production-configurations
Здесь вы можете прочитать подробную информацию, но рекомендация состоит в том, чтобы поддерживать промежуточную среду так же, как и производственную среду, и просто использовать вилку героику для копирования из производства в стадию.