2013-07-23 13 views
60

Mam dwie gałęzie, rozwój i produkcję. Każdy ma zależności, z których niektóre są różne. Rozwój wskazuje na zależności, które same są w fazie rozwoju. Podobnie dla produkcji. Muszę wdrożyć do Heroku, który oczekuje zależności od każdej gałęzi w jednym pliku o nazwie "requirements.txt".Jak dostosować plik requirements.txt do wielu środowisk?

Jaki jest najlepszy sposób na zorganizowanie?

Co myślałem o:

  • prowadzenia oddzielnych plików wymagań, po jednym w każdej gałęzi (musi przetrwać częstych scala!)
  • Powiedz Heroku który plik wymagania chcę użyć (zmienną środowiskową?)
  • Napisz wdrożyć skrypty (utworzyć oddział temp, zmodyfikować plik wymagań, popełnić, wdrażać, usuwanie gałęzi temp)
+1

Łatwiejszy skrypt wdrażania: utrzymuje 2 pliki. użyj dowiązania symbolicznego między nimi. – Udy

Odpowiedz

107

można kaskadowo plików wymagań i użyj „-r” fla g powiedzieć pip, aby zawrzeć zawartość jednego pliku w drugim. Można wyrwać swoje wymagania do modułowej hierarchii folderów jak poniżej: zawartość

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

pliki będzie wyglądać następująco:

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 
... 

Poza Heroku, można teraz środowisk konfiguracyjne takie jak ten:

pip install -r requirements/dev.txt 

lub

pip install -r requirements/prod.txt 

Od Heroku wygląda specjalnie dla "requirements.txt" u podstaw projektu, to należy po prostu lustro prod, tak:

requirements.txt:

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

Zignorowałeś problem używania oddzielnych plików wymagań dla różnych środowisk na heroku. –

+9

Wierzę, że moja odpowiedź na to odpowiedziała. –

+1

Szukałem sposobu, aby mieć różne wymagania dotyczące Heroku dla przemieszczania (gdzie chcę mieć dodatkowe pakiety debugowania) i środowiska produkcyjnego (gdzie nie potrzebuję tych pakietów debugowania). Niestety, jak powiedział @EdJ, ta odpowiedź nie rozwiązuje tego problemu. –

Powiązane problemy