Подтвердить что ты не робот

Как настроить файл требований .txt для нескольких сред?

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

Каков наилучший способ организации?

О чем я думал:

  • Поддерживать отдельные файлы требований, по одному в каждой ветке (необходимо выжить в частых слияниях!)
  • Расскажите Heroku, какой файл требований я хочу использовать (переменная среды?)
  • Записать сценарии развертывания (создать ветвь temp, изменить файл требований, зафиксировать, развернуть, удалить ветвь temp)
4b9b3361

Ответ 1

Вы можете каскадировать свои файлы требований и использовать флаг "-r", чтобы сообщить 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" в корне проекта, он должен просто отображать prod, например:

requirements.txt:

# Mirrors prod
-r requirements/prod.txt