2013-07-23 3 views
60

У меня есть два филиала: Разработка и производство. У каждого есть зависимости, некоторые из которых разные. Развитие указывает на зависимости, которые сами находятся в процессе разработки. Аналогично для производства. Мне нужно развернуть в Heroku, который ожидает зависимости каждой ветви в одном файле под названием «requirements.txt».Как настроить файл требований.txt для нескольких сред?

Что является лучшим способом организации?

То, что я думал:

  • Ведение отдельных требований файлов, по одному в каждой отрасли (должны выжить частые слияния!)
  • Скажите Heroku какой файл требования я хочу использовать (переменную окружения?)
  • Написать развернуть сценарии (создать временную ветвь, изменить требование к файлам, фиксации, развертывание, удалить временную ветвь)
+1

простой сценарий развертывания: поддерживает 2 файла. используйте символическую связь между ними. – Udy

ответ

107

Вы можете каскад ваших требования файлов и использовать «-r» FLA g, чтобы сообщить pip о включении содержимого одного файла в другой. Вы можете разорвать ваши требования в иерархии папок модульным, как это: содержание

`-- django_project_root 
|-- requirements 
| |-- common.txt 
| |-- dev.txt 
| `-- prod.txt 
`-- requirements.txt 

файлы будет выглядеть следующим образом:

common.txt:

# Contains requirements common to all environments 
req1==1.0 
req2==1.0 
req3==1.0 
... 

dev.txt:

# Specifies only dev-specific requirements 
# But imports the common ones too 
-r common.txt 
dev_req==1.0 
... 

prod.txt:

# Same for prod... 
-r common.txt 
prod_req==1.0 
... 

Вне Heroku, вы можете теперь среды установки, как это:

pip install -r requirements/dev.txt 

или

pip install -r requirements/prod.txt 

С Heroku выглядит специально для "requirements.txt" в корне проекта, он должен просто зеркало прод, как это:

requirements.txt:

# Mirrors prod 
-r requirements/prod.txt 
+2

Вы проигнорировали проблему использования отдельных файлов требований для разных сред в heroku. –

+9

Я верю, что мой ответ об этом говорил. –

+1

Я искал способ иметь разные требования к Heroku для постановки (где мне нужны дополнительные пакеты отладки) и рабочей среды (где мне не нужны эти пакеты отладки). К сожалению, как сказал @EdJ, этот ответ не затрагивает этого. –

 Смежные вопросы

  • Нет связанных вопросов^_^