2013-07-23 13 views
60

Ho due filiali, sviluppo e produzione. Ognuno ha dipendenze, alcune delle quali sono diverse. Lo sviluppo punta a dipendenze che sono esse stesse in fase di sviluppo. Allo stesso modo per la produzione. Ho bisogno di implementare su Heroku che si aspetta le dipendenze di ogni ramo in un singolo file chiamato 'requirements.txt'.Come personalizzare un requirements.txt per più ambienti?

Qual è il modo migliore per organizzare?

Quello che ho pensato:

  • Mantenere i file di requisiti separati, uno per ogni ramo (deve sopravvivere unioni frequenti!)
  • Dillo Heroku quale file requisiti voglio usare (variabile d'ambiente?)
  • Scrivi schierare gli scritti (creano ramo temp, modificare file di requisiti, si impegnano, distribuire, cancellare ramo temperatura)
+1

script di distribuzione più semplice: conserva 2 file. usa il link simbolico tra di loro. – Udy

risposta

107

È possibile collegare in cascata i file esigenze e utilizzare il fla "-r" g per dire a pip di includere il contenuto di un file all'interno di un altro. È possibile rompere le vostre esigenze in una gerarchia di cartelle modulare in questo modo: i contenuti

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

i file sarebbe simile a questa:

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

Al di fuori di Heroku, è ora possibile ambienti di configurazione di questo tipo:

pip install -r requirements/dev.txt 

o

pip install -r requirements/prod.txt 

Dal Heroku sembra appositamente per "requirements.txt" alla radice del progetto, si dovrebbe solo mirror prod, come questo:

requisiti.txt:

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

Hai ignorato il problema di come utilizzare file di requisiti separati per ambienti diversi su heroku. –

+9

Credo che la mia risposta sia stata affrontata. –

+1

Stavo cercando un modo per avere requisiti diversi su Heroku per la gestione temporanea (dove voglio pacchetti di debug aggiuntivi) e l'ambiente di produzione (dove non ho bisogno di questi pacchetti di debug). Sfortunatamente, come ha detto @EdJ, questa risposta non risolve questo problema. –

Problemi correlati